• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Python轻松抓取微信公众号文章

php 搞代码 4年前 (2022-02-28) 32次浏览 已收录 0个评论

明天持续向 Python 头条增加数据信息,实现了微信公号的爬虫,接下来会持续通过搜狗的知乎搜寻抓取知乎上与 Python 相干的文章、问答。微信公众号的文章链接有些是具备时效性的,过一段时间会变成参数谬误而无法访问,然而咱们发现从公众号后盾点击过来失去的链接却是永恒链接,其参数不会扭转链接也不会生效,也就是说只有可能取得这些参数就能够失去永恒链接。通过观察发现即便从搜狗搜寻入口的有时效性的链接拜访网页,其源码中也带有这些参数:

所以只有解析这几个参数,就能够结构出永恒链接。

首先通过搜狗搜寻入口,能够获取 Python 关键词搜寻的后果,地址为:

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

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

import requests as req
import re
rInfo = r'<h4[\s\S]*?href="([\s\S]*?)".*?>([\s\S]*?)<\/a>[\s\S]*?<\/h4>\s*<p[\s\S]*?>([\s\S]*?)<\/p>'

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)

看到文章最初,如果感觉此篇文章对您有帮忙的话,麻烦点个赞再走哦~谢谢浏览~


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Python轻松抓取微信公众号文章
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址