Python爬虫实现的微信公众号文章下载器
优采云 发布时间: 2020-08-10 10:10selenium爬取流程
安装python selenium手动模块,通过selenium中的webdriver驱动浏览器获取Cookie登陆微信公众号后台;
使用webdriver功能须要安装对应浏览器的驱动插件
注意:谷歌浏览器版本和chromedriver须要对应,否则会导致启动晨报错。
微信公众号登录地址:
微信公众号文章接口地址可以在微信公众号后台中新建图文消息,超链接功能中获取:
搜索公众号名称
获取要爬取的公众号的fakeid
选定要爬取的公众号,获取文章接口地址
文章列表翻页及内容获取
AnyProxy代理批量采集
1、一个陌陌客户端:可以是一台手机安装了陌陌的app,或者是用笔记本中的安卓模拟器。
2、一个陌陌个人号:为了采集内容除了须要陌陌客户端,还要有一个陌陌个人号专门用于采集。
3、本地代理服务器系统:通过Anyproxy代理服务器将公众号历史消息页面中的文章列表发送到自己的服务器上。
4、文章列表剖析与入库系统,分析文章列表和完善采集队列实现批量采集内容。
Fiddler设置代理和抓包
通过对多个帐号进行抓包剖析,可以确定:
_biz:这个14位的字符串是每位公众号的“id”,搜狗的陌陌平台可以获得
uin:与访问者有关,微信号id
key:和所访问的公众号有关
步骤:
1,写按键精灵脚本,在手机上手动点击公号文章列表页,也就是“查看历史消息”;
2,使用fiddler代理绑架手机端的访问,将网址转发到本地用php写的网页;
3,在php网页中将接收到的网址备份到数据库;
4,用python从数据库取出网址,然后进行正常的爬取。
可能存在的问题:
如果只是想爬取文章内容,似乎并没有访问频度限制,但若果想抓取阅读数、点赞数,超过一定频度后,返回都会变为空值。
付费平台
例如清博 新榜,如果只是想看数据的话,直接看每晚的榜单就可以了,还不用花钱,如果须要接入自己的系统的话,他们也提供api接口
3项目步骤
3.1基本原理
目标爬取网站收录了陌陌平台大部分的优质微信公众号文章,会定期更新,经测试发觉对爬虫较为友好。
1、网站页面布局排版规律,不同公众号通过链接中的account分辨
2、一个公众号合辑下的文章翻页也有规律:id号每翻一页+12
所以流程思路就是
获取预查询微信公众号ID(不是直接显示的名称,而是信息名片里的ID号,一般由数字字母组成)
请求html页面,判断是否早已收录改公众号
如果没有收录,则页面显示结果为:404该页面不存在,所以直接使用正则表达式来匹配该提示信息即可
正则匹配,找到目标公众号最大收录文章页数
解析恳求页面,提取文章链接和标题文字
保存信息提取的结果
调用pdfkit和wkhtmltopdf转换网页
3.2环境
win10(64bit)
Spyder(python3.6)
安装转换工具包wkhtmltopdf
requests
pdfkit
3.3公众号信息检索
通过对目标url发起requset恳求,获取页面html信息,然后调用正则方式匹配两条信息
1、该公众号是否存在
2、如果存在,最大的文章收录页数是多少
当公众号存在时,直接调用request解析目标恳求链接。
注意,目标爬虫网站必须要加headers,否则直接拒绝访问
3.4正则解析,提取链接和文章标题
以下代码用于从html文本中解析链接和标题文字信息
3.5手动跳转页面
以下代码通过循环递增形参,改变url中的页脚参数
3.6除去标题中的非法字符
因为windows下文件命令,有些字符是不能用了,所以须要使用正则剔除
itle = re.sub('[\\\\/:*?\"|]', '', info.loc[indexs]['标题'])
3.7转换html为PDF
使用pandas的read_csv函数读取爬取的csv文件,循环遍历“链接”,“标题”,“日期”
然后通过调用pdfkit函数转换生成PDF文件
3.7转换html为PDF
使用pandas的read_csv函数读取爬取的csv文件,循环遍历“链接”,“标题”,“日期”
然后通过调用pdfkit函数转换生成PDF文件
3.8生成的PDF结果
4结果展示