拒绝低效!Python教你爬虫公众号文章和链接

前言
上一篇文章整理了的拒绝教爬接公众号所有文章的导航链接,其实如果手动整理起来的低效话,是众号一件很费力的事情,因为公众号里添加文章的文章时候只能一篇篇的选择,是和链个单选框。

面对几百篇的拒绝教爬接文章,这样一个个选择的低效话,是众号一件苦差事。
pk哥作为一个 Pythoner,文章当然不能这么低效,和链我们用爬虫把文章的拒绝教爬接标题和链接等信息提取出来。
抓包
我们需要通过抓包提取公众号文章的低效请求的 URL,参考之前写过的众号一篇抓包的文章 Python爬虫APP前的准备,pk哥这次直接抓取 PC 端微信的文章公众号文章列表信息,更简单。和链
我以抓包工具 Charles 为例,免费源码下载勾选容许抓取电脑的请求,一般是默认就勾选的。

为了过滤掉其他无关请求,我们在左下方设置下我们要抓取的域名。

打开 PC 端微信,打开 「Python知识圈」公众号文章列表后,Charles 就会抓取到大量的请求,找到我们需要的请求,返回的 JSON 信息里包含了文章的标题、摘要、链接等信息,都在 comm_msg_info 下面。


这些都是请求链接后的返回,请求链接 url 我们可以在 Overview 中查看。

通过抓包获取了这么多信息后,我们可以写爬虫爬取所有文章的信息并保存了。
初始化函数
公众号历史文章列表向上滑动,加载更多文章后发现链接中变化的只有 offset 这个参数,我们创建一个初始化函数,加入代理 IP,请求头和信息,云服务器提供商请求头包含了 User-Agent、Cookie、Referer。

这些信息都在抓包工具可以看到。

请求数据
通过抓包分析出来了请求链接,我们就可以用 requests 库来请求了,用返回码是否为 200 做一个判断,200 的话说明返回信息正常,我们再构建一个函数 parse_data() 来解析提取我们需要的返回信息。
def request_data(self): try: response = requests.get(self.base_url.format(self.offset), headers=self.headers, proxies=self.proxy) print(self.base_url.format(self.offset)) if 200 == response.status_code: self.parse_data(response.text) except Exception as e: print(e) time.sleep(2) pass提取数据
通过分析返回的 Json 数据,我们可以看到,我们需要的数据都在 app_msg_ext_info 下面。

我们用 json.loads 解析返回的 Json 信息,把我们需要的列保存在 csv 文件中,有标题、摘要、文章链接三列信息,其他信息也可以自己加。
def parse_data(self, responseData): all_datas = json.loads(responseData) if 0 == all_datas[ret] and all_datas[msg_count]>0: summy_datas = all_datas[general_msg_list] datas = json.loads(summy_datas)[list] a = [] for data in datas: try: title = data[app_msg_ext_info][title] title_child = data[app_msg_ext_info][digest] article_url = data[app_msg_ext_info][content_url] info = {} info[标题] = title info[小标题] = title_child info[文章链接] = article_url a.append(info) except Exception as e: print(e) continue print(正在写入文件) with open(Python公众号文章合集1.csv, a, newline=, encoding=utf-8) as f: fieldnames = [标题, 小标题, 文章链接] # 控制列的顺序 writer = csv.DictWriter(f, fieldnames=fieldnames) writer.writeheader() writer.writerows(a) print("写入成功") print(----------------------------------------) time.sleep(int(format(random.randint(2, 5)))) self.offset = self.offset+10 self.request_data() else: print(抓取数据完毕!)这样,爬取的结果就会以 csv 格式保存起来。
运行代码时,可能会遇到 SSLError 的报错,b2b供应网最快的解决办法就是 base_url 前面的 https 去掉 s 再运行。
保存markdown格式的链接
经常写文章的人应该都知道,一般写文字都会用 Markdown 的格式来写文章,这样的话,不管放在哪个平台,文章的格式都不会变化。
在 Markdown 格式里,用 [文章标题](文章url链接) 表示,所以我们保存信息时再加一列信息就行,标题和文章链接都获取了,Markdown 格式的 url 也就简单了。
md_url = [{}].format(title) + ({}).format(article_url)爬取完成后,效果如下。

我们把 md链接这一列全部粘贴到 Markdown 格式的笔记里就行了,大部分的笔记软件都知道新建 Markdown 格式的文件的。

这样,这些导航文章链接整理起来就是分类的事情了。
相关文章
常见的电脑设置错误及解决方法(避免电脑设置错误的关键注意事项)
摘要:在现代社会中,电脑已经成为人们工作和生活中不可或缺的一部分。然而,许多人在使用电脑时常常遇到各种设置错误,导致电脑功能无法正常发挥。本文将探讨一些常见的电脑设置错误以及解决方法,帮...2025-11-04
hello大家好我是大家的学习成长小伙伴Captain我们继续学习RocketMQ,上一篇我们学习了广播消息、延迟消息、批量消息、过滤消息这些在RocketMQ中的特性,这一篇我们继续来学习Ro2025-11-04
做开发除了需要高效的编码能力,同样也离不开编程思维的指导。作为刚刚进入汽车电子行业的开发小白,本篇博文将总结最近学习到的汽车软件行业开发思维:V模型。1、V模型概述汽车软件开发过程中的V模型对行业内开2025-11-04
干啥啥不行,看小说第一名。这不,好好写了一篇文章。最近整理了一下文章目录,因为好早之前就有兄弟跟我说之前文章找不到,我也懒得整理,现在好好整了一下,发现有一篇文章写了一半我就放着了,抽空把他刚好补齐了2025-11-04教你如何组装一整的台式机配置(打造个性化电脑,尽在你的掌握之中)
摘要:在电脑科技日新月异的今天,定制一台个性化的台式机已经成为了许多科技爱好者的追求。不仅可以根据自己的需求选择合适的硬件配置,还可以通过自己的双手完成组装过程,使得整个使用体验更加顺畅...2025-11-04
Await,Async 我要把它翻个底朝天,这回你总该明白了吧
一:背景1. 讲故事await,async 这玩意的知识点已经被人说的烂的不能再烂了,看似没什么好说的,但我发现有不少文章还是从理论上讲述了这两个语法糖的用法,懂得还是懂,不懂的看似懂了过几天又不懂了2025-11-04

最新评论