网页视频抓取工具 知乎(向Python头条添加数据信息,完成了微信公号的爬虫)
优采云 发布时间: 2021-12-21 16:05网页视频抓取工具 知乎(向Python头条添加数据信息,完成了微信公号的爬虫)
今天继续为Python头条添加数据信息,完成微信公众号爬虫。接下来我会继续在搜狗的知乎搜索和爬取文章上搜索知乎以及知乎上关于Python的问答。微信公众号的部分文章链接具有时效性,使用一段时间后会出现参数错误,无法访问。但是我们发现在公众号后台点击获取的链接是永久链接,它们的参数不会更改链接不会失败,也就是说只要能获取到这些参数,就可以永久链接获得。通过观察发现,即使是从搜狗搜索词条上的时间敏感链接访问该网页,
所以只要分析这些参数,就可以构建一个永久的链接。
首先可以通过搜狗搜索入口获取Python关键词的搜索结果,地址为:
HOST = 'http://weixin.sogou.com/'
entry = HOST + "weixin?type=2&query=Python&page={}"
提取链接、标题和摘要信息:
import requests as req
import re
rInfo = r'([\s\S]*?)[\s\S]*?\s*([\s\S]*?)'
html = req.get(entry.format(1)) # 第一页
infos = re.findall(rInfo, html)
由于 关键词 搜索会在标题或摘要中生成特定格式的标签,因此需要对其进行过滤:
def remove_tags(s):
return re.sub(r'', '', s)
然后根据时效链接获取文章的内容,从中提取参数信息:
from html import unescape
from urllib.parse import urlencode
def 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)
if len(params) == 0:
return None
return {i.split('=')[0].strip(): i.split('=', 1)[1].strip('|" ') for i in params[0]}
for (link, title, abstract) in infos:
title = unescape(self.remove_tag(title))
abstract = unescape(self.remove_tag(abstract))
params = weixin_params(link)
if params is not None:
link = "http://mp.weixin.qq.com/s?" + urlencode(params)
print(link, title, abstract)
看到文章后,如果觉得这篇文章对你有帮助,请在离开前给我点个赞~谢谢阅读