Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)

yizhihongxing

Python如何爬取微信公众号文章和评论(基于Fiddler抓包分析)

本文将介绍如何使用Python爬取微信公众号文章和评论。我们将使用Fiddler抓包工具来分析微信公众号的API接口,并使用Python的requests库来发送HTTP请求和解析响应数据。

1. Fiddler抓包分析

在开始爬取微信公众号文章和评论之前,我们需要先分析微信公众号的API接口。为了分析API接口,我们将使用Fiddler抓包工具。

1.1. 安装Fiddler

首先,我们需要安装Fiddler抓包工具。Fiddler是一款免费的抓包工具,可以用于分析HTTP请求和响应数据。可以从Fiddler官网下载最新版本的Fiddler。

1.2. 配置Fiddler

安装完成后,我们需要配置Fiddler以便于抓取微信公众号的API接口。具体步骤如下:

  1. 启动Fiddler,并在菜单栏中选择Tools -> Options
  2. HTTPS选项卡中,勾选Decrypt HTTPS traffic选项,并点击Actions按钮,选择Trust Root Certificate
  3. Connections选项卡中,勾选Allow remote computers to connect选项,并记录下Fiddler listens on port的端口号。
  4. 点击OK按钮保存配置。

1.3. 抓包分析

配置完成后,我们可以开始抓包分析微信公众号的API接口。具体步骤如下:

  1. 在Fiddler中点击Start Capture按钮开始抓包。
  2. 在微信客户端中打开要爬取的公众号,并选择一篇文章。
  3. 在Fiddler中找到微信客户端发送的HTTP请求,并查看请求的URL和参数。
  4. 在Fiddler中找到微信客户端接收的HTTP响应,并查看响应的数据。

通过抓包分析,我们可以获取到微信公众号的API接口和响应数据,从而可以使用Python来爬取微信公众号文章和评论。

2. 爬取微信公众号文章

在本节中,我们将介绍如何使用Python爬取微信公众号文章。我们将使用Python的requests库来发送HTTP请求,并使用正则表达式来解析响应数据。

2.1. 发送HTTP请求

首先,我们需要发送HTTP请求来获取微信公众号的文章列表。我们可以使用requests库来发送HTTP请求。具体代码如下:

import requests

url = 'https://mp.weixin.qq.com/mp/profile_ext?action=getmsg&__biz=MzI5MjEzNjUwMA==&f=json&offset=0&count=10&is_ok=1&scene=124&uin=777&key=777&pass_ticket=777&wxtoken=&appmsg_token=1111&x5=0&f=json'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
    'Referer': 'https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzI5MjEzNjUwMA==&scene=124&devicetype=Windows+10&version=62060833&lang=zh_CN&nettype=WIFI&a8scene=3&fontScale=100&pass_ticket=777&wx_header=1',
    'Cookie': 'cookie'
}
response = requests.get(url, headers=headers)

在上面的代码中,我们使用requests库发送了一个GET请求,并设置了请求的URL、请求头和Cookie。其中,URL中的参数包括:

  • __biz:公众号的唯一标识符。
  • offset:文章列表的偏移量。
  • count:每次请求返回的文章数量。
  • is_ok:是否成功获取文章列表。
  • scene:场景值。
  • uin:用户ID。
  • key:加密密钥。
  • pass_ticket:通行证。
  • appmsg_token:文章令牌。
  • x5:是否使用X5内核。

2.2. 解析响应数据

发送HTTP请求后,我们需要解析响应数据来获取文章列表。我们可以使用正则表达式来解析响应数据。具体代码如下:

import re

pattern = re.compile(r'"app_msg_list":(.*?),"err_msg"')
result = pattern.search(response.text)
if result:
    data = result.group(1)
    articles = eval(data)
    for article in articles:
        title = article['title']
        url = article['link']
        print(title, url)

在上面的代码中,我们使用正则表达式来匹配响应数据中的文章列表,并使用eval函数将匹配到的数据转换为Python对象。然后,我们遍历文章列表,获取每篇文章的标题和URL,并输出到控制台。

3. 爬取微信公众号评论

在本节中,我们将介绍如何使用Python爬取微信公众号文章的评论。我们将使用Python的requests库来发送HTTP请求,并使用json库来解析响应数据。

3.1. 发送HTTP请求

首先,我们需要发送HTTP请求来获取微信公众号文章的评论。我们可以使用requests库来发送HTTP请求。具体代码如下:

import requests

url = 'https://mp.weixin.qq.com/mp/appmsg_comment?action=getcomment&__biz=MzI5MjEzNjUwMA==&appmsgid=100000240&idx=1&comment_id=0&offset=0&limit=100&uin=777&key=777&pass_ticket=777&wxtoken=&devicetype=Windows+10&clientversion=62060833&appmsg_token=1111'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
    'Referer': 'https://mp.weixin.qq.com/s?__biz=MzI5MjEzNjUwMA==&mid=100000240&idx=1&sn=777&chksm=6c78f7b55b0f7ea3f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7&scene=21&ascene=0&devicetype=Windows+10&version=62060833&nettype=WIFI&abtest_cookie=BAABAAoACwASABMABAAjlx4AVpkeAMSZHgDmZHgDmJ4A&lang=zh_CN&fontScale=100&pass_ticket=777&wx_header=1',
    'Cookie': 'cookie'
}
response = requests.get(url, headers=headers)

在上面的代码中,我们使用requests库发送了一个GET请求,并设置了请求的URL、请求头和Cookie。其中,URL中的参数包括:

  • __biz:公众号的唯一标识符。
  • appmsgid:文章的ID。
  • idx:文章的序号。
  • comment_id:评论的ID。
  • offset:评论列表的偏移量。
  • limit:每次请求返回的评论数量。
  • uin:用户ID。
  • key:加密密钥。
  • pass_ticket:通行证。
  • appmsg_token:文章令牌。

3.2. 解析响应数据

发送HTTP请求后,我们需要解析响应数据来获取文章的评论。我们可以使用json库来解析响应数据。具体代码如下:

import json

data = json.loads(response.text)
comments = data['elected_comment_total_cnt']
for comment in data['elected_comment']:
    content = comment['content']
    print(content)

在上面的代码中,我们使用json库来将响应数据转换为Python对象。然后,我们遍历评论列表,获取每条评论的内容,并输出到控制台。

4. 示例

以下是两个爬取微信公众号文章和评论的示例:

4.1. 示例1

爬取微信公众号文章列表:

import requests
import re

url = 'https://mp.weixin.qq.com/mp/profile_ext?action=getmsg&__biz=MzI5MjEzNjUwMA==&f=json&offset=0&count=10&is_ok=1&scene=124&uin=777&key=777&pass_ticket=777&wxtoken=&appmsg_token=1111&x5=0&f=json'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
    'Referer': 'https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzI5MjEzNjUwMA==&scene=124&devicetype=Windows+10&version=62060833&lang=zh_CN&nettype=WIFI&a8scene=3&fontScale=100&pass_ticket=777&wx_header=1',
    'Cookie': 'cookie'
}
response = requests.get(url, headers=headers)

pattern = re.compile(r'"app_msg_list":(.*?),"err_msg"')
result = pattern.search(response.text)
if result:
    data = result.group(1)
    articles = eval(data)
    for article in articles:
        title = article['title']
        url = article['link']
        print(title, url)

在上面的代码中,我们使用requests库发送了一个GET请求,并使用正则表达式解析响应数据,获取文章列表,并输出到控制台。

4.2. 示例2

爬取微信公众号文章的评论:

import requests
import json

url = 'https://mp.weixin.qq.com/mp/appmsg_comment?action=getcomment&__biz=MzI5MjEzNjUwMA==&appmsgid=100000240&idx=1&comment_id=0&offset=0&limit=100&uin=777&key=777&pass_ticket=777&wxtoken=&devicetype=Windows+10&clientversion=62060833&appmsg_token=1111'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
    'Referer': 'https://mp.weixin.qq.com/s?__biz=MzI5MjEzNjUwMA==&mid=100000240&idx=1&sn=777&chksm=6c78f7b55b0f7ea3f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7&scene=21&ascene=0&devicetype=Windows+10&version=62060833&nettype=WIFI&abtest_cookie=BAABAAoACwASABMABAAjlx4AVpkeAMSZHgDmZHgDmJ4A&lang=zh_CN&fontScale=100&pass_ticket=777&wx_header=1',
    'Cookie': 'cookie'
}
response = requests.get(url, headers=headers)

data = json.loads(response.text)
comments = data['elected_comment_total_cnt']
for comment in data['elected_comment']:
    content = comment['content']
    print(content)

在上面的代码中,我们使用requests库发送了一个GET请求,并使用json库解析响应数据,获取文章的评论,并输出到控制台。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析) - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • python3编码问题汇总

    Python3编码问题汇总 在使用Python3进行编程的过程中,常常会遇到一些关于编码的问题。本文将会对这些问题进行汇总,并给出相应的解决方案。 1. Python3的默认编码 Python3的默认编码是UTF-8,这意味着所有的字符串都会以UTF-8进行编码。而在Python2中,则是使用ASCII码作为默认编码,这就可能会导致一些编码方面的问题。 2.…

    python 2023年5月19日
    00
  • python 获取list 长度

    获取Python中list的长度非常简单,只需要使用len()函数即可。下面是具体的攻略: 步骤1:准备一个列表 在获取列表长度之前,需要先创建一个Python列表。例如,以下是一个包含5个元素的列表: my_list = [1, 2, 3, 4, 5] 步骤2:使用len()函数获取列表长度 要获取该列表的长度,只需要使用len()函数。该函数将返回一个整…

    python 2023年6月6日
    00
  • python实现简易学生信息管理系统

    Python实现简易学生信息管理系统 1. 项目介绍 本项目使用Python编程语言实现一个简易的学生信息管理系统。主要功能包括添加、查询和删除学生信息。用户可以通过命令行界面完成这些操作。 2. 环境准备 在开始之前,需要确保已经安装了Python环境和相关的依赖库。推荐使用Python版本为3.x。 3. 实现过程 3.1 初始化项目 首先需要创建一个新…

    python 2023年5月13日
    00
  • 浅析python中特殊文件和特殊函数

    浅析Python中特殊文件和特殊函数 在Python中,有一些特殊的文件和函数。它们在代码执行过程中扮演着重要的角色,简化了代码实现的过程。本文将对这些特殊的文件和函数进行简要分析。 特殊文件 __init__.py 在Python中,每个文件夹都可以作为一个模块被调用,其中的__init__.py文件作为该模块的初始化文件。该文件可以包含模块所需的全局变量…

    python 2023年5月13日
    00
  • Python利用openpyxl类实现在Excel中绘制乐高图案

    下面是使用Python和openpyxl库,在Excel中绘制乐高图案的详细实例教程。 一、安装依赖库 要使用Python绘制乐高图案,需要安装以下几个依赖库: Python 3.x:安装Python的官方网站提供了安装包,下载地址为 https://www.python.org/downloads/ ; openpyxl:用于操作Excel文件的Pytho…

    python 2023年5月13日
    00
  • Python异常的检测和处理方法

    Python异常的检测和处理方法 简介 在 Python 编程中,可能会出现各种各样的异常,比如变量未定义、文件不存在、网络连接失败等等。如果不处理异常,程序会直接崩溃,给用户使用带来不便,甚至还会导致数据丢失和安全隐患等。 为了更好的保护程序,Python 引入了异常处理机制,使程序能够自动检测异常并做出相应处理。本文将详细讲解 Python 异常的检测和…

    python 2023年5月13日
    00
  • 在Python中使用cookielib和urllib2配合PyQuery抓取网页信息

    在Python中,我们可以使用cookielib和urllib2库来抓取网页信息,并使用PyQuery库来解析网页内容。本攻略将介绍如何使用这些库来抓取网页信息。 1. 安装Python库 我们需要安装Python的cookielib、urllib2和PyQuery库。可以使用以下命令进行安装: pip install cookielib pip insta…

    python 2023年5月15日
    00
  • 利用Python实现网站自动签到

    下面就给您详细讲解利用Python实现网站自动签到的完整攻略。 一、准备工作 在开始之前,您需要提前准备以下内容: Python环境 requests库 Chrome浏览器 Chrome驱动 其中,Chrome驱动需要根据本机Chrome浏览器版本进行下载,具体操作及下载链接可在Chrome官网的Driver下载页面找到。 二、分析签到流程 在开始编写代码前…

    python 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部