python爬虫爬取公众号_Python 抓取微信公众号文章

今天继续向 Python 头条添加数据信息,完成了微信公号的爬虫,接下来会继续通过搜狗的知乎搜索抓取知乎上与 Python 相关的文章、问答。

微信公众号的文章链接有些是具有时效性的,过一段时间会变成参数错误而无法访问,但是我们发现从公众号后台点击过去得到的链接却是永久链接,其参数不会改变链接也不会失效,也就是说只要能够获得这些参数就可以得到永久链接。通过观察发现即使从搜狗搜索入口的有时效性的链接访问网页,其源码中也带有这些参数:

719_d44_7ef.jpg

所以只要解析这几个参数,就可以构造出永久链接。

首先通过搜狗搜索入口,可以获取 Python 关键词搜索的结果,地址为:

HOST = 'http://weixin.sogou.com/'entry = HOST + "weixin?type=2&query=Python&page={}"

提取链接、标题和摘要信息:

import requests as req

import re

rInfo = r'

([\s\S]*?)<\/a>[\s\S]*?<\/h4>\s*

([\s\S]*?)<\/p>'html = req.get(entry.format(1)) # 第一页infos = re.findall(rInfo, html)

由于关键词搜索会在标题或摘要中产生特定格式的标签,需要过滤:

def remove_tags(s):

return re.sub(r'<.*?>', '', s)

然后根据时效性链接获取文章内容,并从中提取参数信息:

fromhtmlimportunescapefromurllib.parseimporturlencodedef weixin_params(link):html = req.get(link) rParams =r'var (biz =.*?".*?");\s*var (sn =.*?".*?");\s*var (mid =.*?".*?");\s*var (idx =.*?".*?");'params = re.findall(rParams, html)iflen(params) ==0:returnNonereturn{i.split('=')[0].strip(): i.split('=',1)[1].strip('|" ')foriinparams[0]}for(link, title, abstract)ininfos: title = unescape(self.remove_tag(title)) abstract = unescape(self.remove_tag(abstract)) params = weixin_params(link)ifparamsisnotNone: link ="http://mp.weixin.qq.com/s?"+ urlencode(params) print(link, title, abstract)

由此可以收集到以 Python 为关键词的微信公众号文章,包括链接、标题和摘要。如需文章内容也可以随时通过链接提取,但是为了尊重创作者,请在抓取文章正文的时候请检查原创信息并合理标注作者及引用信息。

微信公众号的抓取的数据也已经加入到 Python 头条,欢迎移步 https://pyhub.cc 查看!根据昨天发布的投票信息【为你感兴趣的 Python 专题投票】,看到大家对 Python 的爬虫专题比较感兴趣,因此把今天实践操作的一些内容与大家分享,希望可以有所帮助(还没有投票的抓紧投起来~~)。

717_c40_8b6.jpg

题图来源:Captain America: Civil War

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值