前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 导出公众号文章为 Markdown

Python 导出公众号文章为 Markdown

作者头像
章鱼猫先生
发布2023-10-25 17:04:03
4101
发布2023-10-25 17:04:03
举报
文章被收录于专栏:BioIT爱好者BioIT爱好者

记录一下个人使用 Python3 爬取个人公众号的所有文章,并把文章保存为 Markdown 格式的一些操作记录,主要介绍一下思路和一些简单的代码。

前提条件与思路

  1. 需要登录网页端微信公众号,获取对应 Cookies;
  2. 通过获取的 Cookies 爬取所有的文章 url 以及其他信息;
  3. 通过文章 url 获取对应文章的 HTML;
  4. 最后,把 HTML 转化为 Markdown。

之所以选择通过文章公开访问的 url 爬取对应文章的 HTML,而不是直接沿用 Cookies,主要是怕 Cookies 滥用导致其他不可预知的问题,例如封号之类。截止本文章发布前,个人公众号全部已发表的文章大约有 400 多篇,通过这个方法都能正常爬取下来。

获取已发表文章数

登录公众号,按下 F12 打开开发者工具,在 网络 栏中找到 appmsgpublish 名称的请求。

  • 查看请求地址
  • 获取 cookie
代码语言:javascript
复制
import requests, json

#注意把 <Your Cookie> 替换成你自己的 cookie
headers = {'Content-type': 'application/json', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36',
           'Cookie': <Your Cookie>}

#这个 url 即截图中的请求地址
url = 'https://mp.weixin.qq.com/cgi-bin/appmsgpublish?sub=list&search_field=null&begin=0&count=5&query=&type=101_1&free_publish_type=1&sub_action=list_ex&token=<token>&lang=zh_CN&f=json&ajax=1'
req = requests.get(url, headers=headers)
req_json = json.loads(req.content.decode("utf-8"))
req_json
# total_count 即为已发表文章的总数

获取所有的文章信息

以下程序的 mp.txt 就是得到的该公众号所有文章信息的列表。

代码语言:javascript
复制
allPostList = []

for number in range(0, 420, 20):
    #注意 begin={number}&count=20,即按照每页20篇文章,分页进行爬取
    #根据测试每页最多只支持20篇文章
    url = f"https://mp.weixin.qq.com/cgi-bin/appmsgpublish?sub=list&search_field=null&begin={number}&count=20&query=&type=101_1&free_publish_type=1&sub_action=list_ex&token=<token>&lang=zh_CN&f=json&ajax=1', headers=headers)"
    x = requests.get(url, headers=headers)
    posts_list  = json.loads(json.loads(x.content.decode("utf-8"))['publish_page'])["publish_list"]
    allPostList = allPostList + posts_list  
    time.sleep(5)

with open("mp.txt", "w") as OUT:
    OUT.write(str(allPostList))

HTML to Markdown

Python 导出公众号文章为 Markdown 最后的一步工作就是解析上一步骤得到的 mp.txt 文件,然后通过 url 去逐一爬取对应的文章 HTML,然后把 Html 转化成 Markdown 即可。

这些步骤都很简单,网上搜一下就有一大堆教程,感兴趣的可以去搜一下,这里文章就不写了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-10-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 BioIT爱好者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前提条件与思路
  • 获取已发表文章数
  • 获取所有的文章信息
  • HTML to Markdown
相关产品与服务
云开发 CLI 工具
云开发 CLI 工具(Cloudbase CLI Devtools,CCLID)是云开发官方指定的 CLI 工具,可以帮助开发者快速构建 Serverless 应用。CLI 工具提供能力包括文件储存的管理、云函数的部署、模板项目的创建、HTTP Service、静态网站托管等,您可以专注于编码,无需在平台中切换各类配置。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档