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

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日

相关文章

  • python定位xpath 节点位置的方法

    下面是关于”Python定位XPath节点位置的方法”的完整攻略。 标题:Python定位XPath节点位置的方法 简介 XPath是一种用来在XML文档中定位元素的语法规则,可以用于解析XML和HTML文档。Python语言通过使用XPath语法来轻松获取XML和HTML文档中的对象。Python中有多种方式来实现XPath定位,其核心是使用lxml库内置…

    python 2023年6月3日
    00
  • Python标准库之itertools库的使用方法

    介绍 Python标准库之itertools是一个常用的模块,用于生成迭代器的函数。在循环语句中,通过使用这些函数,可以更快速方便地实现一些操作。itertools包含了很多生成器函数,它们能用于组合、迭代等一系列处理模块。本文将对itertools库的使用方法进行完整介绍。 安装 itertools库是Python的标准库,因此没有必要安装它。只需要在Py…

    python 2023年6月3日
    00
  • python获取当前目录路径和上级路径的实例

    获取当前目录路径和上级路径是Python编程中经常用到的操作之一,这里提供两种方式来实现。 获取当前目录路径 获取当前目录路径主要使用os模块中的os.getcwd()方法,可以直接返回当前操作系统指定进程的当前工作目录。代码示例如下: import os # 获取当前目录路径 current_path = os.getcwd() print("当…

    python 2023年6月2日
    00
  • Python中使用md5sum检查目录中相同文件代码分享

    下面是“Python中使用md5sum检查目录中相同文件代码分享”的完整攻略。 准备工作 在使用Python检查目录中相同文件之前,需要安装md5sum工具。如果是Linux或Unix系统,则已经内置此工具;如果是Windows系统,则需要下载cygwin并安装md5sum。可以在这个网站下载cygwin。 安装完md5sum后,就可以进行Python代码的…

    python 2023年6月2日
    00
  • Python星号*与**用法分析

    当使用Python编程时,星号和通常用于处理参数,unpacking元素和编写可变数量的函数参数。接下来,我将详细讲解Python星号与**用法分析以及在不同场景下的使用示例。 使用星号*处理参数 常规参数和可变数量的参数同时存在 在Python中,可以将星号用于处理常规参数和可变数量的参数。下面是一个例子,其中a是常规参数,b是可变数量的参数,且带有星号的…

    python 2023年5月13日
    00
  • python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例

    Python3 + PyQt5 是一种强大的组合,可以用来创建多线程网络应用程序。这篇攻略将介绍如何使用 Python3 和 PyQt5 创建 TCP 客户端和 TCP 服务器实例的示例。以下是详细的步骤: 步骤一:导入必要的模块 在程序开始之前,需要导入必需的模块。这些模块包括 socket、sys、threading、PyQt5.QtCore、PyQt5…

    python 2023年5月19日
    00
  • python中cPickle用法例子分享

    下面我就为大家详细讲解一下“Python中cPickle用法例子分享”的完整攻略: 什么是cPickle cPickle是Python中的序列化和反序列化模块,它可以将Python对象转换为二进制流(也称 Serialized)以便于在网络上传输或者存储到本地文件中,通常被用于进行远程调用、进程间通信、Web开发中的Session管理等应用场景中。 不同于P…

    python 2023年6月2日
    00
  • python插入排序算法的实现代码

    下面是详细讲解“Python插入排序算法的实现代码”的完整攻略,包含两个示例说明。 插入算法 插入排序算法是一种简单的排序算法,它的基本思想是待排序的序列分为已排序和未排序两部分,然后将未排序的元素逐个插入到已排序的序列中,直到整个序列有序为止。 Python插入排序算法的实现 下面是一个示例代码,用于实现插入算法: def insertion_sort(a…

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