采集微信公众号所有文章的方法与历史消息列表
优采云 发布时间: 2023-05-18 10:43一、了解微信公众号文章采集原理
微信公众号的文章采集,其实就是通过模拟用户登录微信公众平台,然后获取该公众号历史消息列表的过程。因此,在进行文章采集前,需要先了解微信公众平台的登录原理和历史消息列表接口的调用方式。
二、获取微信公众平台账号
如果想要进行微信公众号文章采集,首先需要拥有一个微信公众平台账号。如果没有账号,可以通过微信官方网站进行注册。
三、获取微信公众平台开发者账号
在进行微信公众号文章采集前,还需要拥有一个微信公众平台开发者账号。如果没有账号,可以通过微信官方网站进行注册。
四、使用Python进行微信公众号文章采集
Python是一种非常流行的编程语言,在进行微信公众号文章采集时也可以使用Python来实现。下面就来为大家介绍如何使用Python进行微信公众号文章采集。
1.安装Python库
在进行微信公众号文章采集前,需要先安装Python的相关库,比如requests、beautifulsoup4、lxml等库。可以使用pip命令来安装这些库,具体命令如下:
python
pip install requests
pip install beautifulsoup4
pip install lxml
2.获取微信公众平台Cookie
在使用Python进行微信公众号文章采集前,需要先获取微信公众平台的Cookie。可以通过以下步骤来获取:
1)打开Chrome浏览器,并进入微信公众平台登录页面;
2)按下F12键,打开开发者工具;
3)切换到Network选项卡,并勾选Preserve log选项;
4)输入账号和密码登录微信公众平台;
5)在开发者工具中选择login请求,并复制Request Headers中的Cookie字段。
3.获取历史消息列表
在获取微信公众平台的历史消息列表时,需要向以下接口发送请求:
python
https://mp.weixin.qq.com/mp/profile_ext?action=getmsg&__biz={}&f=json&offset={}&count=10&is_ok=1&scene=124&uin=777&key=777&pass_ticket=&wxtoken=&appmsg_token=&x5=0&f=json
其中,{}表示要采集的微信公众号的biz参数值,offset表示要采集的文章偏移量,count表示每次采集的文章数量。可以通过以下代码来获取历史消息列表:
```python
import requests
def get_history_msg_list(biz, cookie):
headers ={
'Cookie': cookie,
'Referer':'https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz={}&scene=124&devicetype=android-30&2af72f100c356273d46284f6fd1dfc08=2700043b&lang=zh_CN&nettype=WIFI&a8scene=3&session_us=gh_13c8e6a2da9f&pass_ticket=iJkrzJg%2F%2BhZw2GyvQlH5P0l0fYBnCtEzj7W4HrM%2BZiWn5dHQ7K6YzQO6Hs%2B5kZ9c&r=e05d1bb11c4b5edcf780ea27b8b68f04&fontScale=100&scanQRCodeTime=1621347037',
'User-Agent':'Mozilla/5.0(Linux; Android 11; MI 10 Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.128 Mobile Safari/537.36 MMWEBID/714 MicroMessenger/8.0.6.44968aece94f667e4095002d140b5896(0x2800063A) Process/toolsmp WeChat/e323460b1fffcfd8e3753758c1a16f24/WIFI Language/zh_CN ABI/arm64'
}
offset = 10
while True:
url ='https://mp.weixin.qq.com/mp/profile_ext?action=getmsg&__biz={}&f=json&offset={}&count=10&is_ok=1&scene=124&uin=777&key=777&pass_ticket=&wxtoken=&appmsg_token=&x5=0&f=json'.format(biz, offset)
resp = requests.get(url, headers=headers)
data = resp.json()
msg_list = data['general_msg_list']['list']
for msg in msg_list:
#处理文章数据
pass
if not data['can_msg_continue']:
break
offset += 10
五、文章采集的注意事项
在进行微信公众号文章采集时,需要注意以下几点:
1)不能过于频繁地进行文章采集,否则可能会被微信平台识别为恶意行为而被封禁账号。
2)需要处理好可能出现的反爬虫机制,比如验证码等。
3)需要对采集到的文章数据进行清洗和去重,以确保数据的准确性和完整性。
六、结语
通过上述步骤,可以高效地采集单个微信公众号所有文章。当然,在实际操作中还需要根据具体情况进行调整和优化。希望本文能够对大家有所帮助。