python 公众号爬虫_整理公众号文章?Python爬虫让一切变的简单……

有时候公众号文章需要进行整理分析,要把所有文章的链接整合起来还真不是一个容易的事情!手动整理固然简单,但文章数量多起来整理还真不是一件容易的事情。

这个时候我们可以用到神器Python,定制爬虫的指定“装备”!

我们知道,微信公众号的文章链接都是做了隐藏的,一般爬虫无法抓取,我们应该怎么办呢?

1583130652656.png

没有真实链接

我们需要通过抓包提取公众号文章的请求的 URL,此次我们以Charles为例子,勾选抓取电脑请求, 默认就是勾选的,不改动即可!

1583130658999.png

默认勾选

过滤掉无关请求,我们指抓取微信的域名,可以在软件下方设置要抓取的域名具体如图所示!

1583130665462.png

微信mp开头的域名

打开“新睿云”的微信公众号的文章列表后,Charles 就会抓取到大量的请求,找到我们需要的文章标题与链接,在JSON返回的信息里面包含了文章的标题、链接、信息等等。

1583130672746.png

返回文章标题与链接

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

1583130678161.png

Overview

抓包抓到这么多,下面我们就可以进行对标题与链接的提取了!

初始化函数

我们通过对抓包的信息进行分析后,则可以使用requests 库来进行请求,对返回的值进行判断!如果返回是是整形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的分析,我们则能看到需求的数据均在appmsgext_info 下面。

1583130686013.png

提取数据

我们用 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 也就简单了。

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

当爬虫运行完毕后,则效果如下:

1583130697832.png

结果展示

剩下的就是整合分类的问题了,这就要看你自己喽!

在云服务器中部署爬虫更快更便捷哦!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值