Python实现微信公众号文章自动抓取,轻松获取文章列表!
优采云 发布时间: 2023-05-03 22:33微信公众账号是自媒体创作的重要平台,但是手动逐一抓取文章列表的效率较低。本文将介绍如何使用Python实现微信公众账号文章列表的自动抓取,提高自媒体创作效率。
一、背景介绍
在自媒体创作过程中,经常需要参考其他公众账号的文章内容。但是手动逐一搜索和查看文章列表效率较低、耗时耗力,因此我们可以通过编写Python程序实现自动化抓取。
二、环境准备
本文使用Python 3.6版本,并安装以下第三方库:
- requests:用于发送HTTP请求
- BeautifulSoup4:用于解析HTML页面
三、抓取流程
1.获取登录信息
首先需要获取登录的cookie信息,通过浏览器登录微信公众平台后,在开发者工具中查看cookie信息,复制到程序中。
2.抓取文章列表
在登录状态下,访问指定公众账号首页地址,可以获取到该账号最新发布的若干篇文章。通过分析页面结构,可以发现文章列表以JSON格式返回,因此只需解析该JSON数据即可获取文章列表。
3.解析文章详情页
获取到文章列表后,可以从中提取出文章的URL地址,然后访问该地址获取文章详情页的HTML页面。通过解析该页面,可以获取到文章的标题、发布时间、正文内容等信息。
4.存储数据
将获取到的文章信息存储到本地文件或数据库中,方便后续分析和使用。
四、代码实现
下面是Python代码实现微信公众账号文章列表抓取的示例:
9124f3bace2c53be0cbc40e2643c5c81#设置登录cookie信息
cookies ={
'login_sid_t':'...',
'mid':'...',
'mp_edition_change_time':'',
'mp_version':'',
'pass_ticket':'',
'ua_id':''
}
#获取指定公众账号的文章列表
def get_article_list(account_id):
url =f'https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz={account_id}&scene=124&#wechat_redirect'
headers ={
'User-Agent':'Mozilla/5.0(Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36'
}
response = requests.get(url, headers=headers, cookies=cookies)
soup = BeautifulSoup(response.text,'html.parser')
json_data = soup.select_one('#js_profile_qrcode > div > div > div > span').text.strip()
article_list = json.loads(json_data)['list']
return article_list
#获取指定文章详情页信息
def get_article_detail(article_url):
headers ={
'User-Agent':'Mozilla/5.0(Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36'
}
response = requests.get(article_url, headers=headers, cookies=cookies)
soup = BeautifulSoup(response.text,'html.parser')
title = soup.select_one('#activity-name').text.strip()
publish_time = soup.select_one('#publish_time').text.strip()
content = soup.select_one('#js_content').text.strip()
return {
'title': title,
'publish_time': publish_time,
'content': content
}
#示例:抓取“优采云”公众账号最新10篇文章
if __name__=='__main__':
account_id ='MzI4MTk2NzUwMQ=='
article_list = get_article_list(account_id)[:10]
for article in article_list:
article_url = article['app_msg_ext_info']['content_url'].replace('amp;','')
article_detail = get_article_detail(article_url)
print(article_detail['title'], article_detail['publish_time'])
五、总结
本文介绍了如何使用Python实现微信公众账号文章列表的自动抓取,帮助自媒体创作者提高创作效率。通过分析页面结构和解析HTML页面,可以获取到文章的标题、发布时间、正文内容等信息。希望本文能对读者有所帮助。