所在位置:首页 > 游戏问答 > Python爬虫实现的微信公众号文章下载器

Python爬虫实现的微信公众号文章下载器

发布时间:2023-05-21 20:53:06来源:头条浏览:6

硒爬行过程

安装python selenium自动模块,通过selenium中的webdriver驱动浏览器获取Cookie登录微信微信官方账号后台;

要使用webdriver功能,需要安装相应浏览器的驱动插件。

注意:Google浏览器版本和chromedriver需要对应,否则启动时会出错。

微信微信官方账号登陆地址:https://mp.weixin.qq.com/

微信微信官方账号文章的界面地址可以从微信微信官方账号后台的新增图文消息和超链接功能中获取:

搜索微信官方账号名称

获取微信官方账号的fakeid进行抓取。

选择微信官方账号抓取,获取文章的界面地址。

文章列表的翻页和内容获取

AnyProxy代理批量采集

1.一个微信客户端:可以是安装了微信app的手机,也可以是电脑里的安卓模拟器。

2.一个微信个人号:为了收藏内容,不仅需要一个微信客户端,还需要一个专门用于收藏的微信个人号。

3.本地代理服务器系统:通过Anyproxy server将微信官方账号历史消息页面中的文章列表发送到自己的服务器上。

4.文章列表分析入库系统,分析文章列表,建立收藏队列,实现内容的批量收藏。

Fiddler设置代理并抓取包。

通过对多个账户的分析,我们可以确定:

_biz:这个14位的字符串是每个微信官方账号的“id”,可以通过搜狗的微信平台获取。

Uin:与访问者相关,微信号id

关键:和访问微信官方账号有关系。

步骤:

1.写一个击键向导脚本,自动点击手机上的公共文章列表页面,即“查看历史新闻”;

2.利用fiddler代理劫持手机的访问,将URL转发到用php编写的本地网页;

3.将接收到的URL备份到php网页上的数据库中;

4.使用python从数据库中检索URL,然后正常抓取。

可能存在的问题:

如果只是想爬取文章内容,似乎并没有访问频率限制,但如果想抓取阅读数、点赞数,超过一定频率后,返回就会变为空值。

付费平台

例如清博新榜,如果只是想看数据的话,直接看每天的榜单就可以了,还不用花钱,如果需要接入自己的系统的话,他们也提供api接口

3项目步骤

3.1基本原理

目标爬取网站收录了微信平台大部分的优质微信公众号文章,会定期更新,经测试发现对爬虫较为友好。

1、网站页面布局排版规律,不同公众号通过http://chuansong.me/account/almosthuman2014链接中的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结果展示