温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么用Python爬虫公众号文章和链接

发布时间:2021-11-19 13:35:46 来源:亿速云 阅读:425 作者:iii 栏目:编程语言

这篇文章主要讲解了“怎么用Python爬虫公众号文章和链接”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Python爬虫公众号文章和链接”吧!

抓包

我们需要通过抓包提取公众号文章的请求的 URL,参考之前写过的一篇抓包的文章 Python爬虫APP前的准备,pk哥这次直接抓取 PC  端微信的公众号文章列表信息,更简单。

我以抓包工具 Charles 为例,勾选容许抓取电脑的请求,一般是默认就勾选的。

怎么用Python爬虫公众号文章和链接

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

怎么用Python爬虫公众号文章和链接

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

怎么用Python爬虫公众号文章和链接

怎么用Python爬虫公众号文章和链接

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

怎么用Python爬虫公众号文章和链接

通过抓包获取了这么多信息后,我们可以写爬虫爬取所有文章的信息并保存了。

初始化函数

公众号历史文章列表向上滑动,加载更多文章后发现链接中变化的只有 offset 这个参数,我们创建一个初始化函数,加入代理 IP,请求头和信息,请求头包含了  User-Agent、Cookie、Referer。

怎么用Python爬虫公众号文章和链接

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

怎么用Python爬虫公众号文章和链接

请求数据

通过抓包分析出来了请求链接,我们就可以用 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 下面。

怎么用Python爬虫公众号文章和链接

我们用 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 的报错,最快的解决办法就是 base_url 前面的 https 去掉 s 再运行。

保存markdown格式的链接

经常写文章的人应该都知道,一般写文字都会用 Markdown 的格式来写文章,这样的话,不管放在哪个平台,文章的格式都不会变化。

在 Markdown 格式里,用 [文章标题](文章url链接) 表示,所以我们保存信息时再加一列信息就行,标题和文章链接都获取了,Markdown  格式的 url 也就简单了。

md_url = '[{}]'.format(title) + '({})'.format(article_url)

爬取完成后,效果如下。

怎么用Python爬虫公众号文章和链接

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

怎么用Python爬虫公众号文章和链接

感谢各位的阅读,以上就是“怎么用Python爬虫公众号文章和链接”的内容了,经过本文的学习后,相信大家对怎么用Python爬虫公众号文章和链接这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI