Python爬取指定公众号文章

前言

本文仅用于学习使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

一、数据准备

1、在某信公众平台上注册一个账号用于获取关键数据

2、注册完成后按照下面图文操作获取待爬取的公众号信息,搜索自己想要的公众号

点击进入待爬取的公众号,然后在浏览器上鼠标右键点击查看审核元素,点击网络(即network)找到"appmsg"开头的文档打开。

下面我们来解析一下这份文档:

1、URL:

 从这可以看出该文档基本url为:问号前面这部分

 2、cookie:

  cookie隔断时间会自动更新,没有cookie的话直接requests.get()是获取不了文章的。

 3、user-agent:

 user-agent用于将python伪装成一个普通的用户去正常访问服务器

 这里有个需要注意的点:

1、fakeid是微信公众号的唯一标识符

2、token是一个用于限制爬虫的一个参数,隔段时间也会更新

二、完整代码

先附上完整代码,后面有详细代码解析

import requests
import re
import csv
import time
import pandas as pd
 
headers = {
    "Cookie":"appmsglist_action_3274572572=card; RK=XehxU9peSU; ptcz=95a8ffbd10736622148737eb73888f7660e7dddd656271c5870fd813f3651f2c; pac_uid=1_504168539; iip=0; tvfe_boss_uuid=9aee0d93d6d67858; pgv_pvid=5314099328; o_cookie=504168539; pgv_pvi=9233449984; ua_id=mQ5C92HdkxsSpIApAAAAAKZzHtK_BXPTYp3jfSaKY9o=; wxuin=46308164865891; mm_lang=zh_CN; uuid=7a48a466b231ccd67cd8329a06aefb7b; rand_info=CAESIOkdo/sKbVU446lVSmc5E3d9jm+2CB1pJy7mS2lHoveJ; slave_bizuin=3274572572; data_bizuin=3274572572; bizuin=3274572572; data_ticket=a7JfO8AVShaa17EkiagXFtwQDmXXB2H2Ui35fRixQ4ceQq0KbQI3tgjSlE7Gi2yV; slave_sid=UF9XMjJkeXljRGlTMEJtcWpuUFJXOWRLenRVWk1LQ2JqSWxRU0x2dEJEd2tMVVNvUjJwQlpYcENKOE5BS2hlT3J0cHduT2Y1T2tVZ241OWJBSDRJbUpsRUZlNmVMUnAwXzI4MHpiUVpnemNxV0VoNzhVU3dnV3NvRTloeGtHRUxkZDFPRW5YVkd0bEF5RWQ3; slave_user=gh_b77ee583f1f7; xid=56410b97e460e56d19283daf8432f73b",
    "user-agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"
}
url = 'https://mp.weixin.qq.com/cgi-bin/appmsg'
data = {'token':'111525524',           # 隔段时间要更新
       "lang":"zh_CN",
        "f":"json",
        "ajax":"1",
        "action":"list_ex",
        "begin":"0",
        "count":"4",
        "query":"",
        "fakeid":"Mzg2ODU0NTA2Mw==",
        "type":"9",
}
 
content_list = []
n = int(input("需要爬取多少页(一页有四篇):"))
 
for i in range(n):            # 爬取n三页
    data["begin"] = i*4       # 修改data中的begin数值(一页有4个结果)
    time.sleep(3)             # 防止被检测(不要低于3)
 
    content_json = requests.get(url=url,headers=headers,params=data).json()
    # print(content_json) 用于观察
 
    # 获取信息
    for item in content_json["app_msg_list"]:
        # 提取每页文章的标题及对应的url
        items = []
        items.append(item["title"])
        items.append(item["link"])
        content_list.append(items)
    print("正在爬取第",i+1,"页")
 
name=['title','link']
test=pd.DataFrame(columns=name,data=content_list)
test.to_csv("test.csv",mode='a',encoding='utf-8')
print("保存成功")

三、代码解析

1、导入库

import requests
import re
import csv
import time
import pandas as pd

2、将上面准备的数据存放在一个变量上

headers = {
    "Cookie":"appmsglist_action_3274572572=card; RK=XehxU9peSU; ptcz=95a8ffbd10736622148737eb73888f7660e7dddd656271c5870fd813f3651f2c; pac_uid=1_504168539; iip=0; tvfe_boss_uuid=9aee0d93d6d67858; pgv_pvid=5314099328; o_cookie=504168539; pgv_pvi=9233449984; ua_id=mQ5C92HdkxsSpIApAAAAAKZzHtK_BXPTYp3jfSaKY9o=; wxuin=46308164865891; mm_lang=zh_CN; uuid=7a48a466b231ccd67cd8329a06aefb7b; rand_info=CAESIOkdo/sKbVU446lVSmc5E3d9jm+2CB1pJy7mS2lHoveJ; slave_bizuin=3274572572; data_bizuin=3274572572; bizuin=3274572572; data_ticket=a7JfO8AVShaa17EkiagXFtwQDmXXB2H2Ui35fRixQ4ceQq0KbQI3tgjSlE7Gi2yV; slave_sid=UF9XMjJkeXljRGlTMEJtcWpuUFJXOWRLenRVWk1LQ2JqSWxRU0x2dEJEd2tMVVNvUjJwQlpYcENKOE5BS2hlT3J0cHduT2Y1T2tVZ241OWJBSDRJbUpsRUZlNmVMUnAwXzI4MHpiUVpnemNxV0VoNzhVU3dnV3NvRTloeGtHRUxkZDFPRW5YVkd0bEF5RWQ3; slave_user=gh_b77ee583f1f7; xid=56410b97e460e56d19283daf8432f73b",
    "user-agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"
}
url = 'https://mp.weixin.qq.com/cgi-bin/appmsg'
data = {'token':'111525524',           # 隔段时间要更新
       "lang":"zh_CN",
        "f":"json",
        "ajax":"1",
        "action":"list_ex",
        "begin":"0",
        "count":"4",
        "query":"",
        "fakeid":"Mzg2ODU0NTA2Mw==",
        "type":"9",
}

需要用自己浏览器上对应的参数,cookie与token隔断时间也会更新,写错的话会返回

'base_resp': {'ret': 200003, 'err_msg': 'invalid session'}这个结果

3、requests它的json文件,观察一下里面有什么

content_list = []      # 用于存放爬取的数据
n = int(input("需要爬取多少页(一页有四篇):"))
 
for i in range(n):            # 爬取n三页
    data["begin"] = i*4       # 修改data中的begin数值(一页有4个结果)
    time.sleep(3)             # 防止被检测(不要低于3)
    content_json = requests.get(url=url,headers=headers,params=data).json()
    print(content_json)

如果需要爬取该公众号全部文章的话可以自行将for循环改成”while True:”,这里为了方便测试就用了for循环。

json文件爬取的结果:

 整理一下文档格式找一下有用信息发现关键信息都在app_msg_list列表中:

 

  4、用列表提取app_msg_list列表关键信息并保存:

content_list = []
n = int(input("需要爬取多少页(一页有四篇):"))
 
for i in range(n):            # 爬取n三页
    data["begin"] = i*4       # 修改data中的begin数值(一页有4个结果)
    time.sleep(3)             # 防止被检测(最好不要低于3)
 
    content_json = requests.get(url=url,headers=headers,params=data).json()
    # print(content_json) 用于观察
 
    # 获取信息
    for item in content_json["app_msg_list"]:
        # 提取每页文章的标题及对应的url
        items = []
        items.append(item["title"])
        items.append(item["link"])
        content_list.append(items)
    print("正在爬取第",i+1,"页")

5、将爬取的信息以csv格式保存在电脑上

name=['title','link']
test=pd.DataFrame(columns=name,data=content_list)
test.to_csv("test.csv",mode='a',encoding='utf-8')
print("保存成功")

  • 1
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Python可以用于爬取微信公众号文章。有几种方式可以实现这一目标,其中一种方式是通过登录微信公众号平台,在里面搜索要爬取公众号,然后进行抓包。另外一种方式是使用安卓模拟器进行抓包。还可以使用搜狗的微信模块来获取数据。 在使用第一种方式时,首先需要拥有一个微信公众号的账号。然后,通过工具如pycharm和fiddler等,登录微信公众号平台,进入创作管理,选择图文素材,然后创建或编辑文章。最后,通过添加引用和查找公众号文章等步骤,进行数据的爬取和收集。 在实现这些步骤之前,你需要了解微信公众号平台的主要功能和界面布局。主面板可以划分为七大块,每个块都有不同的功能。在后续的操作中,你可以使用Python代码来模拟微信请求,并实现数据的爬取和分析。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [欢度国庆⭐️共享爬虫之美⭐️基于 Python 实现微信公众号爬虫Python无所不能爬)](https://blog.csdn.net/xiejiachao/article/details/120573509)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [【爬虫python爬取微信公众号](https://blog.csdn.net/qq_36269293/article/details/109244944)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云溪·

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值