发现了合自己胃口的公众号,但文章太多翻来翻去真麻烦,还好我学了 Python
现在我们大多数人都会或多或少的关注几个公众号,如果发现一个比较合自己胃口的号

对公众号中的文章一定是每篇必读的。
有时候我们关注到宝藏型公众号时发现其历史文章已经好几百甚至上千篇了,而作者又只对其中自己认为比较好的几篇做了索引,我们翻来翻去实在太麻烦了,为了解决这种问题,我决定用 Python 将公众号中文章爬下来。
基本思路
爬取公众号文章列表信息,可获取的信息主要包括文章链接、标题等
利用 wechatsogou 模块根据文章链接获取文章 html 格式信息
爬取
文章爬取我们采用借助公众平台的方式,这种方式虽然简单,但需要我们自己有一个公众号,如果没有公众号可以自己注册一个,公众号的注册也比较简单,这里就不说了。
首先,登录自己的公众号,然后依次进行如下操作
通过上面的操作,我们可以取到 cookie 等信息,我们先将 cookie 写入 txt 文件中,实现代码如下所示:
# 从浏览器中复制出来的 cookie 字符串
cookie_str = "自己的 cookie"
cookie = {}
# 遍历 cookie
for cookies in cookie_str.split("; "):
cookie_item = cookies.split("=")
cookie[cookie_item[0]] = cookie_item[1]
# 将 cookie 写入 txt 文件
with open('cookie.txt', "w") as file:
file.write(json.dumps(cookie))
接着我们获取公众号文章列表信息,代码实现如下所示:
with open("cookie.txt", "r") as file:
cookie = file.read()
cookies = json.loads(cookie)
url = "https://mp.weixin.qq.com"
response = requests.get(url, cookies=cookies)
# 获取token
token = re.findall(r"token=(\d+)", str(response.url))[0]
# 请求头信息
headers = {
"Referer": "https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit_v2&action=edit&isNew=1&type=10&token=" + token + "&lang=zh_CN",
"Host": "mp.weixin.qq.com",
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36",
}
# 遍历指定页数的文章
for i in range(1, 5, 1):
begin = (i - 1) * 5
# 获取文章列表
requestUrl = "https://mp.weixin.qq.com/cgi-bin/appmsg?action=list_ex&begin="+str(begin)+"&count=5&fakeid=要爬取公众号的fakeid&type=9&query=&token=" + token + "&lang=zh_CN&f=json&ajax=1"
search_response = requests.get(requestUrl, cookies=cookies, headers=headers)
# 获取 JSON 格式的列表信息
re_text = search_response.json()
list = re_text.get("app_msg_list")
# 遍历文章列表
for j in list:
# 文章链接
url = j["link"]
# 文章标题
title = j["title"]
print(url)
# 等待 8 秒,避免请求过于频繁
time.sleep(8)
保存
通过文章列表信息我们可以得到公众号文章链接、标题等信息,接着我们就可以通过 wechatsogou 模块根据文章链接获取文章的 html 格式信息了,模块安装使用 pip install wechatsogou 即可。
这里需要注意一下,我们通过 wechatsogou 模块获取的 html 信息会有一些问题,主要的问题有两个,一是获取文章的 html 信息不全,需要我们自己补一下;另一个是获取的 html 信息可能会有一些 CSS 样式没有带过来,这个问题我们可以先通过浏览器的开发者工具取到样式,然后再手动添加一下就行了。代码实现如下所示:
# url:文章链接,title:文章标题
def save2html(url, title):
# captcha_break_time 为验证码输入错误的重试次数,默认为 1
ws_api = wechatsogou.WechatSogouAPI(captcha_break_time = 3)
content_info = ws_api.get_article_content(url)
html = f'''
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{title}</title>
</head>
<link href="my.css" rel="stylesheet" type="text/css" />
<body>
<h2 style="text-align: center;font-weight: 400;">{title}</h2>
{content_info['content_html']}
</body>
</html>
'''
with open(title + '.html', "w", encoding="utf-8") as file:
file.write('%s\n'%html)
上述代码中 my.css 文件存放的就是一些没有带过来的 CSS 样式信息。
用浏览器打开一个公众号文章的 html 文件看一下效果:
通过上面的显示结果,可以看出我们保存的 html 文件的显示效果还算比较好。
如果需要完整代码,微信扫描识别文末二维码,后台回复 200411 即可。
参考:https://mp.weixin.qq.com/s/jGjCfnGdxzK29FgC4E-_Cg
发现了合自己胃口的公众号,但文章太多翻来翻去真麻烦,还好我学了 Python的更多相关文章
- python爬搜狗微信获取指定微信公众号的文章
前言: 之前收藏了一个叫微信公众号的文章爬取,里面用到的模块不错.然而 偏偏报错= =.果断自己写了一个 正文: 第一步爬取搜狗微信搜到的公众号: http://weixin.sogou.com/we ...
- 50行Python代码,教你获取公众号全部文章
> 本文首发自公众号:python3xxx 爬取公众号的方式常见的有两种 - 通过搜狗搜索去获取,缺点是只能获取最新的十条推送文章 - 通过微信公众号的素材管理,获取公众号文章.缺点是需要申请自 ...
- 用iframe嵌入了一个微信公众号平台文章的URL
JS: $.ajaxPrefilter( function (options) { if (options.crossDomain && jQuery.support.cors) { ...
- 我创建了一个网站,专门分享公众号的文章 https://asyons.com
网址:https://asyons.com/,为做个网站,自娱自乐的自明星,但投资也挺大的了,注册了一家公司,公财私章,做账报税,阿里云服务器,全职开发.算上时间价值,按小时,投资过5万了.
- 拒绝低效!Python教你爬虫公众号文章和链接
本文首发于公众号「Python知识圈」,如需转载,请在公众号联系作者授权. 前言 上一篇文章整理了的公众号所有文章的导航链接,其实如果手动整理起来的话,是一件很费力的事情,因为公众号里添加文章的时候只 ...
- 微信公众号批量爬取java版
最近需要爬取微信公众号的文章信息.在网上找了找发现微信公众号爬取的难点在于公众号文章链接在pc端是打不开的,要用微信的自带浏览器(拿到微信客户端补充的参数,才可以在其它平台打开),这就给爬虫程序造成很 ...
- 使用Python爬取微信公众号文章并保存为PDF文件(解决图片不显示的问题)
前言 第一次写博客,主要内容是爬取微信公众号的文章,将文章以PDF格式保存在本地. 爬取微信公众号文章(使用wechatsogou) 1.安装 pip install wechatsogou --up ...
- 微信公众号【阿里技术(ali_tech)】历史文章整理
简介 来自微信公众号: ali_tech 阿里巴巴官方技术号,关于阿里的技术创新均呈现于此. 本内容来自微信公众号的分享,最后更新时间2019-10-26,请关注对应公众号接收最新分享,定期同步地址: ...
- 【技巧】如何使用客户端发布BLOG+如何快速发布微信公众号文章
[技巧]如何使用客户端发布BLOG+如何快速发布微信公众号文章 1 BLOG文档结构图 2 前言部分 2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也 ...
随机推荐
- 助力SpringBoot自动配置的条件注解ConditionalOnXXX分析--SpringBoot源码(三)
注:该源码分析对应SpringBoot版本为2.1.0.RELEASE 1 前言 本篇接 如何分析SpringBoot源码模块及结构?--SpringBoot源码(二) 上一篇分析了SpringBoo ...
- 代号为 Kyria 的 Manjaro Linux 19.0 系统正式发布
Xfce版本仍然是主打,此版本Xfce更新到4.14,并且主要致力于在桌面和窗口管理器上完善用户体验. KDE版本提供了功能强大.成熟且丰富的Plasma 5.17桌面环境,此版本进行了完全重新设计. ...
- 简单的scrapy命令和中间件
创建爬虫 scrapy genspider 名字 xxx.com 运行爬虫 运行名为usnews的爬虫scrapy crawl usnews运行爬虫文件scrapy runspider quote_ ...
- Druid 0.17 入门(3)—— 数据接入指南
在快速开始中,我们演示了接入本地示例数据方式,但Druid其实支持非常丰富的数据接入方式.比如批处理数据的接入和实时流数据的接入.本文我们将介绍这几种数据接入方式. 文件数据接入:从文件中加载批处理数 ...
- tempdb 日志文件增长的问题
前两天在一个客户那里发现tempdb log 文件增长很大,已经使用40GB了,而tempdb log 文件总的分配空间是70GB,并且日志空间貌似不能重用,他们使用sql 2012 打的sp4补丁, ...
- 交换机三种模式Access、Hybrid和Trunk
[端口介绍] 种链路类型:access.trunk.hybird 个VLAN,一般用于连接计算机端口: Trunk类型端口:可以允许多个VLAN通过,可以接收和发送多个VLAN 报文, 一般用于交换机 ...
- MVC设计模式简介
刚刚学习了MVC相关知识,在这里进行一下总结MVC设计模式提高了Java开发中的代码可读性,提高了开发效率,实乃开发利器 1在MVC中由客户端发送一个带参数的请求,经过servlet处理后做出相应的处 ...
- 深度学习归一化:BN、GN与FRN
在深度学习中,使用归一化层成为了很多网络的标配.最近,研究了不同的归一化层,如BN,GN和FRN.接下来,介绍一下这三种归一化算法. BN层 BN层是由谷歌提出的,其相关论文为<Batch No ...
- angular 中嵌套 iframe 报错
错误如下 Error: unsafe value used in a resource URL context at DomSanitizationServiceImpl.sanitize... 解决 ...
- mysql8 修改root密码
Navicat工具里选中mysql数据库 执行: ALTER user 'root'@'localhost' IDENTIFIED BY 'newpassward'; //newpassward 新密 ...