Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

DustinLi/wechat_articles_spider

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

111 Commits

Repository files navigation

微信公众号文章爬虫

实现思路一:

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

完整思路可以参考我的博客: 微信公众号爬虫

实现思路二:

  1. 登陆微信PC端或移动端获取公众号所有文章的url,这种获取到的url数量大于500,具体数值暂未测试
  2. 同上种方法,获取文章阅读数、点赞数、评论信息

Notes

  1. 爬取失败的时候,可能有以下原因
    1. 需要关注对应公众号
    2. 运行的时候需要关闭网络代理(抓包软件),或者添加相关参数
    3. 参数是否最新
    4. 检查代码
  2. 思路一获取url时,每页间隔可以设定久一点,比如3分钟
  3. 获取文章阅读点赞时,每篇文章可以设定在10s左右。

python版本

  • python: 3.6.2

第三方包

  • requests: 爬取内容

详情见requirements.txt

功能实现

  • 获取某公众号信息

  • 获取某公众号所有文章数量

  • 获取某公众号文章的url信息

  • 获取某公众号所有文章信息(包含点赞数、阅读数、评论信息),需要手动更改循环

  • 获取某公众号指定文章的信息

  • 支持两种微信公众号登录方式, 下面方法选用其一即可

    1. 账号密码爬虫,输入账号密码后,扫描二维码登录。自动获取cookie和token。此方法需要安装matplotlibPIL用于显示二维码图片

    2. cookie、token登录,手动复制cookie和token。

  • 支持两种获取文章阅读数和点赞数的方式,下面方式选用其一即可

    1. 利用抓包工具手动获取

    2. 安装python第三方库mitmproxy自动获取

  • 支持存储方式

    1. txt存储(不建议)

    2. mongo存储。需要安装pymongo

变量名的说明

变量名 作用
usernmae 个人公众号的账号
password 个人公众号的密码
official_cookie 个人公众号的cookie
token 个人公众号的token
appmsg_token 个人微信号的appmsg_token
wechat_cookie 个人微信号的cookie
key 个人微信号的key
uin 个人微信号的uin
nickname 需要获取文章的公众号名称
query 筛选公众号文章的关键词
outfile mitmproxy抓包获取请求的保存文件
begin 从第几篇文章开始爬取
count 每次爬取的文章数(最大为5, 但是返回结果可能会大于5)

API实例

以下完整实例代码见test/目录下的实例代码。

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

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

wechat_cookie和appmsg_token自动获取的介绍(需要安装mitmproxy),可以参考这篇文档。默认开放端口为8080。

wechat_cookie和appmsg_token建议获取每天或者每半天获取一次即可。此处通过上面获取到的url即可无限爬取,没有次数限制

# 导入模块
import sys
sys.path.append(path + "/wechat_articles_spider")
from wechatarticles import OfficialWeChat
from wechatarticles import LoginWeChat
from wechatarticles import ReadOutfile
from wechatarticles import ArticlesAPI

一次性获取文章的信息(阅读、点赞、评论信息)

# 下面三种方式任选一种即可
# 手动输入所有参数
test = ArticlesAPI(
 official_cookie=official_cookie,
 token=token,
 appmsg_token=appmsg_token,
 wechat_cookie=wechat_cookie)
# 输入账号密码,自动登录公众号,手动输入appmsg_token和wechat_cookie
test = ArticlesAPI(
 username=username,
 password=password,
 appmsg_token=appmsg_token,
 wechat_cookie=wechat_cookie)
# 手动输入official_cookie和token, 自动获取appmsg_token和wechat_cookie
test = ArticlesAPI(
 official_cookie=official_cookie, token=token, outfile=outfile)
# 自定义爬取,每次爬取5篇以上
data = test.complete_info(nickname=nickname, begin="0")
# 自定义从某部分开始爬取,持续爬取,直至爬取失败为止,一次性最多爬取40篇(功能未测试,欢迎尝试)
datas = test.continue_info(nickname=nickname, begin="0")

分解步骤

步骤一: 获取公众号的所有文章url

此处有次数限制,不可一次获取太多url(获取超过30、40条貌似就会失败)。解决方案多个账号同时爬取

# 实例化爬取对象
# 账号密码自动获取cookie和token
test = ArticlesUrls(username=username, password=password)
# 手动输入账号密码
test = ArticlesUrls(cookie=official_cookie, token=token)
# 输入公众号名称,获取公众号文章总数
articles_sum = test.articles_nums(nickname)
# 输入公众号名称,获取公众号部分文章信息, 每次最大返回数为5个
articles_data = test.articles(nickname, begin="0", count="5")
# 输入公众号名称,获取公众号的一些信息
officical_info = test.official_info(nickname)
# 输入公众号名称,输入关键词,获取公众号相关文章信息, 每次最大返回数为5个
articles_data_query = test.articles(nickname, query=query, begin="0", count="5")
# 输入公众号名称,输入关键词,获取公众号相关文章总数
articles_sum_query = test.articles_nums(nickname, query=query)

步骤二:登录微信PC端获取文章信息

# 支持自动获取appmsg_token和cookie
appmsg_token, cookie = Reader().contral(outfile)
# 实例化爬取对象
# 账号密码自动获取cookie和token
test = ArticlesInfo(appmsg_token=appmsg_token, cookie=wechat_cookie)
# 获取文章所有的评论信息(无需appmsg_token和cookie)
comments = test.comments(link)
# 获取文章阅读数点赞数
read_num, like_num = test.read_like_nums(link)

获取大量文章urls

test/test_GetUrls.py

TO-DO

  • 发布第三方包

打赏部分

About

微信公众号的爬虫

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages

  • Python 100.0%

AltStyle によって変換されたページ (->オリジナル) /