Skip to content

nsyncxy1/wechat_articles_spider

 
 

Repository files navigation

微信公众号文章爬虫(微信文章阅读点赞的获取)

安装

pip install wechatarticles

展示地址:

日更,获取公众号的最新文章链接,支持日更阅读点赞评论正文

注:本项目仅供学习交流,严禁用于商业用途(该项目也没法直接使用),不能达到开箱即用的水平。使用本项目需要读文档+源码+动手实践,参考示例代码(test文件夹下)进行改写。

提示:另外,已经有很多朋友(大佬)通过直接看源码,已经基于这套项目,或者重写,用于各自的需求。

实现思路一:

  1. 从微信公众号平台获取微信公众所有文章的url
  2. 登录微信PC端或移动端获取文章的阅读数、点赞数、评论信息

完整思路可以参考我的博客: 记一次微信公众号爬虫的经历(微信文章阅读点赞的获取)

实现思路二:

  1. 登陆微信PC端或移动端获取公众号所有文章的url,这种获取到的url数量大于500,具体数量每个微信号不完全一致(目前只能一次性,无法获取第二次!!!请慎重使用test_GetUrls.py,最好不用。。。)
  2. 同上种方法,获取文章阅读数、点赞数、评论信息

公开已爬取的公众号历史文章的永久链接,日期均截止commit时间,仅供测试与学习,欢迎各位关注这些优质公众号。

公众号列表
  • 科技美学
  • 共青团中央
  • 南方周末
  • AppSo
  • ## Notes

    项目始于2017年,当前更新于2023年3月

    项目代码进行调整,调用以前的接口请使用pip install wechatarticles

    1. 爬取失败的时候,可能有以下原因
      1. 运行的时候需要关闭网络代理(抓包软件),或者添加相关参数
      2. 参数是否最新,获取微信相关参数(cookie、token)时,一定要保证是对应公众号的任意文章
      3. 检查代码
      4. 需要关注对应公众号(Maybe)
    2. 思路一获取url时,每页间隔可以设定久一点,比如3分钟,持续时间几小时(来自网友测试)
    3. 获取文章阅读点赞时,每篇文章可以设定在5-10s左右,过期时间为4小时;若被封,大约5-10分钟就可继续抓取。
    4. 思路二获取url时,如果被封,需要24小时整之后才能重新抓取(该条作废,暂时不能解封)

    参数文件说明见README

    python版本

    • python: 3.6.2、3.7.3

    功能实现

    功能 公众号相关
  • 公众号信息
  • 公众号biz。获取方式:清博、公众号网页
  • 公众号发表文章数量(不完全准确)
  • 文章相关
  • 某公众号文章的url。获取方式:公众号网页、PC端微信、移动端微信、微信读书
  • 某公众号所有文章信息(包含点赞数、阅读数、评论信息),需要手动更改循环
  • 某公众号指定文章的信息
  • 支持微信文章下载至本地转为html(图片可选是否保存)
  • API实例

    利用公众号网页版获取微信文章url

    此处有次数限制,不可一次获取太多url。解决方案多个账号同时爬取 test_WechatUrls.py

    登录微信PC端获取文章信息(阅读点赞)

    test_WechatInfo.py

    快速获取大量文章urls(利用历史文章获取链接)

    test_GetUrls.py

    微信文章下载为离线HTML(含图片)

    test_Url2Html.py

    学习/运行流程

    可以看这个issue,十分感谢大佬简洁的文字说明。

    相关文档

    见博客与下方文档

    official_cookie和token手动获取方式见这篇文档

    wechat_cookie和appmsg_token手动获取的介绍,可以参考这篇文档

    联系注意事项

    1. 不(能)做自动登录微信公众号、微信

    2. 不(能)做实时(获取参数、阅读点赞、获取文章)

    3. 换一个公众号、参数过期,均需手动更新,如何获取参数均在文章中提及,请仔细查阅

    4. 不能做关键词搜索(即微信搜一搜功能),比如搜索所有含“科技”两个字的文章。

    Q & A

    1. 项目能不能正常运行?

      答:项目可正常运行。

    2. xxx怎么运行/启动,需要获取哪些参数?

      答:请看源码,并手动运行看看输出报错。

    3. xxx参数怎么获取?

      答:文档和博客均描述的很清楚,请仔细阅读。

    4. 我要xxxx,需要怎么做?

      答:看文档,看源码

    5. 网页每日更新的方式怎么做的?

      答:不是万能key。方案很简单,就是模拟点击+代理软件(Fiddler或Mitmproxy)拦截包,每日抓一次,如果你有更好的方案也欢迎告知。这部分未开源(如果有看到相关完整开源的可以提个issue学习一下),纯粹是因为配环境+定制化太麻烦,而且存在一定的问题。懂的看到这里能够实现的就能实现,如果问我我也不好回答你,太耗时耗力。

    6. PC端微信与抓包软件Fiddler是必装的吗?

      答:不是。这个只是我了解(认为)到,这两个是相对最容易完成整个过程的。代替方案:可以抓手机端的微信(安卓和IOS均可,安卓的要root才能抓到阅读点赞);抓包软件Fiddler这个可替代的很多,只要能进行HTTPS抓包查看数据就行。

    7. 大量公众号的文章怎么抓?

      答:本项目无法实现。没很好的方案,参考5。切换一个公众号的时间成本大概要3-5分钟,视熟练程度而异。

    广告位

    附录

    问问题的正常方式:

    1. 描述清楚你运行的系统环境、Python环境...(这步骤可选择性忽略)
    2. 运行了什么代码(改动了哪部分),报了什么错(请完整截图)?
    3. 自己根据报错做了哪些尝试?(文档中是否有描述?在网上搜索的解决方案有哪些)

    编程是实践出真知,运行的正确与否可以直接试出来,没必要耽误两个人的时间。如果运行出了问题,请按照以上流程进行提问,但前提是自己要运行过。请直接说问题or需求,不需要等我回复再说。谢谢!大部分问题均可以交流,如果事无巨细的提问,也接受付费教学。

    微信赞赏码

    About

    微信公众号文章的爬虫

    Resources

    License

    Stars

    Watchers

    Forks

    Packages

    No packages published

    Languages

    • Python 100.0%