爬取微信公众号文章,不适用搜狗浏览器
- 用于爬取某个微信公众号的所有文章列表信息
- 提供运行状态的语音播报。
- 提供MySQL,MongDB,俩种存储方式
- 需要准备至少2个微信公众订阅号,这个需要自己申请,
- 如果需要使用语音播报模块,需要安装 win32com
下载项目后,打开
setting.py
文件,进行配置
- 下载延迟项,过快会被ban,建议在 20到30之前
DOWNLOAD_DELAY = 30
- 选择默认的本地存储管道,
ITEM_PIPELINES = {
'WeXinCrawler.pipelines.MongDBPipeline': 300
# 'WeXinCrawler.pipelines.MysqlTwistedPipline': 300,
}
- 公账号授权的信息的list,用于在爬虫被禁掉时,自动切换账户,无上限,至少2个
- 这个需要自己在微信公众开放平台上,注册,注意是订阅号,不是小程序
AUTH_LIST = [
{'Account':'160xxxxxx@qq.com','PassWord':'xxxxxxx'},
{'Account':'119xxxxxx@qq.com','PassWord':'xxxxxxx'}
]
- 需要爬取的公帐号的名称,暂不支持同时爬取多个公帐号
OFFICIAL_ACCOUNTS = '李叫兽'
#OFFICIAL_ACCOUNTS = '咪蒙'
#OFFICIAL_ACCOUNTS = 'Python中文社区'
- 是否需要使用语音播报爬虫运行状态,当为True时,需要安装 python win32com 模块
SPEEK_ALLOW = False
- MongDB数据库配置,需要配置ITEM_PIPELINES种MongDBPipeline存储
MONGO_HOST = "127.0.0.1" # 主机IP
MONGO_PORT = 27017 # 端口号
MONGO_DB = "Weixin_Spider" # 库名
MONGO_COLLECTION = "weixin_article" # collection名
- MySQL数据库连接配置,需要配置ITEM_PIPELINES种的MysqlTwistedPipline存储,建议使用
- 需要自行建立数据表
- 表名:weixin_spider
- 字段:id
- 类型:int
- 主键
- 自增长
- 字段:cover
- 类型:varchar
- 字段:appmsgid
- 类型:varchar
- 字段:diqest
- 类型:varchar
- 字段:link
- 类型:varchar
- 字段:title
- 类型:varchar
- 字段:content
- 类型:text
- 字段:update_time
- 类型:datetime
MYSQL_HOST = "127.0.0.1"
MYSQL_DBNAME = "Weixin_Spider"
MYSQL_USER = "root"
MYSQL_PASSWORD = "xxxxxx"
数据库表结构
CREATE TABLE `weixin_spider` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`cover` varchar(255) DEFAULT NULL,
`appmsgid` varchar(255) DEFAULT NULL,
`diqest` varchar(255) DEFAULT NULL,
`link` varchar(255) DEFAULT NULL,
`title` varchar(255) DEFAULT NULL,
`content` text COMMENT '文章内容',
`update_time` timestamp NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4
- 启动
- 扫码登录
- 等待爬虫执行完成
- 使用多线程构建登录模块(同步模式)
selenium
打开网页,输入设置的账户和密码信息- 需要手动进行扫码登录,这个是微信的登录机制导致的
- 返回
token
,cookies
- 具体的逻辑可以查看
AuthManager.py
这个文件
- 根据登录获取的
token
和cookies
进行headers
构建 - 发起请求进行 公帐号的获取,返回数据格式为json,需要获取
fakeid
- 根据获取的
fakeid
进行具体的文章列表解析。返回数据为json - 解析总页数,进行文章列表的递归爬取
- 遍历爬取文章内容
参考文章
- 多个公帐号同时爬取
- 授权账户的本地化
- 文章图片抓取
- 文章内容能够入库,会有报错,持续更新中...
- 期待大神纠正、优化