微信公众号怎么采集文章?
微信公众号是一种非常受欢迎的社交媒体应用程序,它可以让用户发布、阅读和分享各种内容。对于内容创作者来说,发布原创文章可以帮助他们建立粉丝群体并提高个人品牌认知度。但是,有时候你可能需要从其他公众号中采集一些文章,以便进行分析或重编辑。在本文中,我们将向您介绍如何使用Python语言自动化采集微信公众号中的文章,并提取需要的字段。
1. 获取公众号的历史文章列表
要采集文章,首先需要获取公众号的历史文章列表,也就是该公众号所有发布的文章。可以通过向微信公众平台发送HTTP请求来获取。具体步骤如下:
a. 打开Chrome浏览器,登录微信公众平台,选择需要采集文章的公众号。
b. 进入该公众号的文章列表页面,右键点击页面空白处,选择“检查”(或按键盘上的F12键)打开开发者工具。在新打开的窗口中选择“Network”(网络)选项卡。
c. 在这个工具中会看到浏览器与服务器之间所有的HTTP请求和响应信息。现在需要刷新文章列表页面,找到一个特定的请求链接。该链接以“https://mp.weixin.qq.com/mp/profile_ext”为开头,含有以下几个查询参数:action、begin、count、f、__biz、uin、key、pass_ticket、wxtoken、appmsg_token、x5为11个参数。其中,参数含义如下所示:
参数 描述
action 固定为getmsg
begin 从第几篇文章开始获取
count 获取多少篇文章
f 最新的一篇文章发布时间
__biz 公众号的唯一ID(可以在公众号链接中获取)
uin 从cookie中获取
key 加密参数
pass_ticket 加密参数
wxtoken 加密参数
appmsg_token 加密参数
x5 固定值1
d. 将该请求链接复制粘贴到Python的requests库中,向该链接发送请求,即可获取公众号的历史文章列表。
2. 解析文章列表页面
从请求结果中可以看到,返回的是一段JSON格式的数据。但是该数据仍然需要进行解析,以提取所需的文章信息。可以使用Python中的BeautifulSoup库和json库来进行解析,代码如下:
import requests from bs4 import BeautifulSoup import json
url = 'https://mp.weixin.qq.com/mp/profile_ext?action=getmsg&__biz=MjM5MDAxNzE2Mg==&f=json&offset=10&count=10&is_ok=1&scene=124&uin=MTQ3MDE1NTM1Nw%3D%3D&key=415030cfb9745a34b395ab8baa2c2c29f7e9c919b8d66048e3615457e2c1703b7d486f7f9ab61b820e6832d5055685399a159dc0d75986af65070e462222efe440e34d9d44f7b2349e399cbafbd346d1&pass_ticket=myaDDI2dBTg9NXwrUjygOS2onfeGqUP1bfFfjp4LbIRz5%2FeAE3wZwV6CCOs5IovK&wxtoken=777&appmsg_token=1022_VSjXi4XYNG5%252FX%252BLmNTt3lKufU9t2TrwiVhXrug~~&x5=0&f=json'
headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36', 'Cookie':'此处填写自己的cookie信息' }
resp = requests.get(url, headers=headers) soup = BeautifulSoup(resp.text, 'html.parser') result = json.loads(soup.find('body').text) articles = result.get('general_msg_list').get('list')
for article in articles: title = article.get('app_msg_ext_info').get('title') description = article.get('app_msg_ext_info').get('digest') keywords = article.get('app_msg_ext_info').get('keywords') content_url = article.get('app_msg_ext_info').get('content_url') #解析单篇文章内容 ... 该代码将返回每篇文章的标题、描述、关键词和内容URL。接下来需要解析每篇文章的具体内容。
3. 解析单篇文章内容
要解析每篇文章的具体内容,需要使用第二步获取到的文章内容URL。首先需要将该URL中的amp;替换成&,因为经常会出现这种情况,然后从文章URL的HTML页面中获取文章正文所在的标签(通常是<.rich_media_content>标签)的内容。然后使用正则表达式或BeautifulSoup库对文章内容进行解析,这将帮助您提取所需的字段。代码如下:
import re from bs4 import BeautifulSoup
url = '此处填写单篇文章的URL信息,并将其中的“amp;”替换成“&”' headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36', 'Cookie':'此处填写自己的cookie信息' }
resp = requests.get(url, headers=headers) soup = BeautifulSoup(resp.text, 'html.parser') content = soup.find('div', {'class':'rich_media_content'}).text
p1 = re.compile(r'thisIsTheTitle = "(.*)"') title = p1.findall(resp.text)[0] p2 = re.compile(r'description : "(.*)"') description = p2.findall(resp.text)[0] p3 = re.compile(r'content_url = "(.*)"') content_url = p3.findall(resp.text)[0]
文章正文中可能包含HTML标签,可以使用BeatifulSoup库将HTML网页文档解析成树形结构,并根据需要选择特定内容,如提取图片、链接等。这样,就可以快速、可靠地采集微信公众号文章,并提取所需的字段。
147SEO » 微信公众号怎么采集文章