今天继续给Python头条添加数据信息,并完成微信公众号的爬虫,接下来继续使用搜狗的知乎搜索抓取知乎上Python相关的文章,问答.微信的一些文章链接公众号是时效性的,过一段时间后参数会出错,无法访问,但是我们从公众号中发现以往点击后台获得的链接是永久链接,其参数不会改变,链接也不会失效,也就是说只要能获得这些参数,就可以获得永久链接.通过观察发现,即使是从搜狗搜索入口的时效链接访问的网页,其源代码中也包含这些参数:所以只要解析这些参数,就可以构建永久链接。首先通过搜狗搜索词条,可以得到Python关键字搜索的结果,地址为:HOST='http://weixin.sogou.com/'entry=HOST+"weixin?type=2&query=Python&page={}"提取链接、标题和摘要信息:将请求导入为reqimportrerInfo=r'
(\s\S]*?)<\/a>[\s\S]*?<\/h4>\s*
([\s\S]*?)<\/p>'html=req.get(entry.format(1))#第一页infos=re.findall(rInfo,html)由于关键字搜索会在标题或摘要中生成特定格式的标签,需要过滤:defremove_tags(s):returnre.sub(r'<.*?>','',s)然后根据时效链接获取文章内容,从中提取参数信息:fromhtmlimportunescapefromurllib.parseimporturlencodedefweixin_params(link):html=req.get(link)rParams=r'var(biz=.*?".*?");\s*var(sn=.*".*?");\s*var(mid=.*?"".*?");\s*var(idx=.*?".*?");'params=re.findall(rParams,html)如果len(params)==0:返回None返回{i.split('=')[0].strip():i.split('=',1)[1].strip('|"')对于我我nparams[0]}for(link,ti??tle,abstract)ininfos:title=unescape(self.remove_tag(title))abstract=unescape(self.remove_tag(abstract))params=weixin_params(link)如果params不是None:link="http://mp.weixin.qq.com/s?"+urlencode(params)print(link,ti??tle,abstract)文末,如果您觉得本文对您有帮助,请点个赞吧~谢谢阅读~