利用Python高效整理公众号推文信息 - 自动抓取文章标题、译文、期刊等
利用Python高效整理公众号推文信息 - 自动抓取文章标题、译文、期刊等
本文将介绍如何使用Python脚本自动抓取公众号推文列表,获取文章标题、标题译文、发表期刊等信息,并整理成表格输出,方便用户快速提取和分析数据。
代码示例
import requests
from bs4 import BeautifulSoup
import pandas as pd
# 公众号推文列表页面URL
url = 'https://mp.weixin.qq.com/cgi-bin/appmsgpublish?sub=list&begin=0&count=10&token=1201158234&lang=zh_CN'
# 发送GET请求获取页面内容
resp = requests.get(url)
soup = BeautifulSoup(resp.text, 'html.parser')
# 解析总页数
page_nav = soup.select('.pagination')[0]
total_pages = int(page_nav.select('span')[0].text.split('/')[1])
# 遍历每一页,获取所有链接
links = []
for page in range(total_pages):
page_url = f'https://mp.weixin.qq.com/cgi-bin/appmsgpublish?sub=list&begin={page*10}&count=10&token=1201158234&lang=zh_CN'
resp = requests.get(page_url)
soup = BeautifulSoup(resp.text, 'html.parser')
articles = soup.select('.weui-desktop-mass-appmsg__bd .weui-desktop-mass-appmsg__title')
for article in articles:
link = article['hrefs'].replace('&', '&')
links.append(link)
# 遍历每个链接,获取文章信息
data = []
for link in links:
resp = requests.get(link)
soup = BeautifulSoup(resp.text, 'html.parser')
title = soup.select('.rich_media_title')[0].text.strip()
title_translation = soup.select('#js_name')[0].text.strip()
journal = soup.select('.rich_media_meta_list span')[0].text.strip()
data.append([title, title_translation, journal])
# 将信息整理成表格输出
df = pd.DataFrame(data, columns=['标题', '标题译文', '发表期刊'])
print(df)
代码说明
- 导入必要的库:
requests用于发送HTTP请求,BeautifulSoup用于解析HTML页面,pandas用于处理表格数据。 - 获取公众号推文列表页面的URL: 替换代码中的URL为目标公众号的推文列表页面URL。
- 解析总页数: 通过解析页面内容找到总页数,并存储在
total_pages变量中。 - 遍历每一页获取所有链接: 循环遍历每一页,获取所有文章的链接,并存储在
links列表中。 - 遍历每个链接获取文章信息: 循环遍历所有链接,访问每个文章页面,解析文章标题、标题译文和发表期刊,并存储在
data列表中。 - 整理成表格输出: 使用
pandas库将data列表整理成表格,并输出到控制台。
代码优化
- 错误处理: 可以添加错误处理机制,例如判断链接是否有效,页面解析是否成功等。
- 数据存储: 可以将整理好的表格数据存储到文件或数据库中,方便后续分析使用。
- 数据清洗: 可以对获取到的数据进行清洗,例如去除空格、特殊字符等。
- 多线程/多进程: 可以使用多线程或多进程技术提高代码效率,加快数据抓取速度。
总结
本文介绍了如何使用Python脚本自动抓取公众号推文列表,获取文章信息,并整理成表格输出,方便用户快速提取和分析数据。希望本文能帮助您更好地利用Python进行数据抓取和处理。
原文地址: https://www.cveoy.top/t/topic/nF83 著作权归作者所有。请勿转载和采集!