首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
V2EX  ›  Python

分享一个我写的用 Python 批量下载微信公众号文章的开源项目

  •  
  •   explorer123 · 10 天前 · 1536 次点击
    有的微信公众号文章很多,如果能批量下载下来会方便很多,我花时间做了些研究,有些小心得,想到可能有别的朋友也需要,就开源出来吧,我 python 水平一般,努力从小白的角度教大家怎么去理解和使用这个工具。
    第一次做开源项目,想通过这个项目多认识些朋友,请大家多提提意见,谢谢啦。
    https://github.com/LeLe86/vWeChatCrawl
    30 回复  |  直到 2019-08-14 12:40:48 +08:00
        1
    hugee   10 天前 via Android
    怎么处理反爬 验证码?
        2
    explorer123   10 天前
    @hugee 此项目从头到尾不涉及验证码问题。
        3
    omph   10 天前   ♥ 1
    虽然主要靠手动操作,程序只做了分析功能,但能用,多谢!
    我研究过 mitmproxy 的纯 python 方案,但好像证书出了问题,无法解析数据包
        4
    lau52y   10 天前
    能全部历史文章么
        5
    explorer123   10 天前
    @omph 客气了。我也考虑过既然是用 python 是否应该用 mitmproxy 而不用 Fiddler,研究了一下发现 mitmproxy 的设置比较繁琐,抓 Https 需要的设置步骤多,新手极易卡住,还是用 Fiddler 吧,虽然步骤多,但每一步都是点按钮而已,小白应该都能搞定。需要看我项目的应该新手居多,能用是第一位的。这是我暂时的想法哈,对不对的也可以和大家讨论下。
        6
    explorer123   10 天前
    @lau52y 不能我都不好意思发出来
        7
    lau52y   10 天前
    嗯,
        8
    lau52y   10 天前
    可以考虑下换 IP 的
        9
    explorer123   10 天前   ♥ 1
    @lau52y 这个让用户自己考虑吧,不在我的主要考虑范围内。
    我做这个项目的原则是:如果你想学习怎么用 python 去下载想要的数据,或者想简单操作之后下些资料自己学习,那我可以帮你,对这些人来说慢一点没关系,不必考虑换 IP 的事,加上了反而影响他们对主线技术的理解。
    如果你想实现大规模很爽的甚至是肆无忌惮的下载,显然已经不是上面的 2 种范畴了,那自己去研究就好了。我最怕最怕的就是好不容易搞出一个很完备的方案却被一些不良分子直接拿这个去商用赚小白的钱,那我就成了给他人做嫁衣裳。
        10
    lau52y   10 天前
    确实,核心已经分享了,后面怎么做看用户自己能力了
        11
    yuanjunye   10 天前 via Android
    这种手动+自动的方式对我挺有用
    不是程序员,但能够看懂简单代码中的一些简单语句,能够做些简单的改动自用
        12
    explorer123   10 天前
    @yuanjunye 嗯嗯,我最初想法就是让稍学过 python 的朋友能照着说明上手,先把结果跑出来了,他会更有兴趣和耐心去看源代码,而不是用高大上的讲解让新人看了想跑,哈哈。
        13
    abcde51111   10 天前 via Android
    mak 一下 最近在学 python 啃完视频再来研读代码 哈哈
        14
    omph   10 天前
    @explorer123 mitmproxy 能像 Fiddler 一样解析出数据吗?我试过没有成功,装了证书也看不到 https 流量
    该怎么设置?
        15
    qwjhb   10 天前
    @omph 可以的啊

    而且其实不用这么麻烦的 fiddler 抓一个访问后拿到 header,复制过去,就可以用 python 造请求了。先爬一遍历史文章列表,然后设好 sleep 一条一条爬就行。 用 mitmproxy 更方便,开着程序拿微信客户端浏览任意一个公众号文章,后台获取到请求的 header,都不用复制粘贴 直接跑就行。
        16
    joson1205   10 天前
    关键还是获取到后怎么用吧,不然没有意义.获取到的文章多数应该是转载吧,不知道有没有考虑文章排版的问题,超链接,图片,字体样式等等这些
        17
    encro   10 天前
    anyproxy 很好用啊
        18
    explorer123   10 天前
    @joson1205 排版不会乱,跟原文一样,公众号文章的 css 多数是内联的。
        19
    explorer123   10 天前
    @qwjhb
    @encro
    Fiddler Anyproxy Mitmproxy 肯定都可以,但 Fiddler 可以按几下鼠标就搞定,不需要写代码,对新人最友好。
    抓 Header 模拟发送请求的方式确实对老手更友好效率更高。对新手的话,我想先放他们能理解的代码,让他们能看懂每一行代码。
        20
    qwjhb   10 天前
    @joson1205 获取到拿来卖=-=
        21
    joson1205   10 天前
    @qwjhb 卖个鸡腿,尊重一下原创吧
        22
    qwjhb   10 天前
    @joson1205 所以我前几年打包公众号合集 mobi 的源码也没放 最多讲讲思路,然而在做这个生意的站好几个了=-=
        23
    omph   10 天前
    @qwjhb 流程确实是这样,但用 Mitmproxy 抓不到 https 的流量,导致得不到 header
    但用 Fiddler 却没问题,目前怀疑是证书的问题
        24
    omph   10 天前
    @qwjhb header 里的参数大概几分钟后就会失效,还要重新获取
        25
    qwjhb   10 天前   ♥ 1
    @omph
    安装下证书

    sleep 不用太久 几秒一次这样爬 header 不会失效的。至少几个小时没问题。个人用本来也不是每时每刻都要爬。之前我基本月底扫一遍几个公众号订成合集看一遍。
        26
    explorer123   9 天前   ♥ 1
    @omph key 半小时失效,对于抓取文章列表时间足够了。
        27
    fuckshit   9 天前
    必须用代理吗? 我也也写了一个抓取微信文章的工具,不过原理不是这样的。 我是通过微信网页版 api 实现的微信机器人,关注公众号,然后公众号有新的文章推送的时候,微信机器人会收到消息,然后自动将文章采集下来。 详情可以看下这里: [https://mlog.club/topic/22]( https://mlog.club/topic/22) 我的也是开源的呢。
        28
    explorer123   9 天前
    @fuckshit 你这个没法下载历史消息啊。另外你的源码在哪?找了一圈没找到。
        29
    fuckshit   9 天前
    @explorer123 项目地址: https://github.com/mlogclub/mlog-wxbot 我这个确实是没法下载历史的文章,微信公众号对于这个限制的很严格, 你的项目也是利用代理拦截才能取到历史数据。
        30
    explorer123   9 天前
    @fuckshit 如果微信没啥限制人人都能下那我这个项目就没有必要存在了。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3843 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 29ms · UTC 09:28 · PVG 17:28 · LAX 02:28 · JFK 05:28
    ♥ Do have faith in what you're doing.