继续创造,加速生长!这是我参与「掘金日新计划 4 月更文应战」的第13天,点击查看活动详情

前语

咱们知道在这个互联网年代,谈论已经在咱们的生活到处可见,谈论区里边的信息是一个十分有趣和有争议的地方。咱们今日,就来获取某技能渠道的谈论,和咱们共享一下,我获取数据的进程,也是一个测验的进程。

发送恳求

咱们首先,确认咱们要获取哪一个文章下面的谈论区。咱们先运用开发者工具,定位到咱们要的数据。

【Python实战】Python采集某评论区内容

咱们通过数据抓取,咱们发现,这个渠道的谈论区数据,放在了一个叫getlist数据包里边了。

【Python实战】Python采集某评论区内容

咱们就不难明白,咱们只要恳求这个url,在传一个关于文章的参数,咱们就能获取到咱们想要的数据。并且,咱们发现,这个是post恳求。咱们先按正常思路写代码。

import requests
url = 'https://xie.infoq.cn/public/v1/comment/getList'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36',
}
res = requests.post(url,headers=headers)
print(res)

咱们发现返回了一个<Response [451]>的值,咱们或许便是少穿了参数,咱们接下来,把参数加上试试。

data = {
    'id': "594899140323389440",
    'score': '1682043841339',# 1681968121323
    'size': '100',
}

咱们发现仍是不行,所以,咱们想到了,这个要加一个防盗链。咱们把相应的参数传进去,咱们再来看看作用。

headers ={
    'Host': 'xie.infoq.cn',
    'Origin': 'https://xie.infoq.cn',
    'Referer': 'https://xie.infoq.cn/article/a5f16dffb45139cba72691c29',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36',
}
res = requests.post(url,data = data,headers=headers)

咱们发现尽管返回了<Response [200]>,但是,咱们仍是拿不到数据,咱们看看服务器给咱们返回了什么姿态的数值。

{"code":-1,"data":{},"error":{"code":-2005,"msg":"ID不能为空"},"extra":{"cost":0.000170465,"request-id":"7c1dc236c95aceb9e56da271b056be88@2@infoq"}}

它提示咱们"msg":"ID不能为空",阐明咱们data传入传错了。

不难看出,便是咱们的文章id没有传进去,或许是咱们传递的参数方式错了,咱们这儿要注意,要用json格局传参。正确的恳求方式如下:

res = requests.post(url,json = data,headers=headers)

咱们发现,就能够获取到了数据,在这个进程,咱们不断的测验,最终,也拿到了咱们想要的数据,咱们会不会有一些成就感。咱们看看获取到了什么姿态的数据吧。

【Python实战】Python采集某评论区内容

拿到了,这样的数据,咱们就不难拿到咱们要的数据,直接字典取值就好了,今日,咱们用了大篇幅的段落,来解说咱们是怎么获取数据的。

解析数据

咱们接下来就能够解析数据了,代码很简单。我这儿直接获取谈论了,不获取谈论者了,原理是一样的,咱们感兴趣的能够自己去试试。

datas = res.json()['data']['list']
for contents in datas:
    content = contents['content']
    print(content)

这段代码将从 res.json()['data']['list'] 中获取数据,并将其存储在 datas 变量中。然后,它运用一个 for 循环遍历 datas 中的每个元素,并将每个元素的 content 属性存储在 content 变量中。最终,它打印出每个元素的 content 属性。

咱们直接看作用,这个很简单的。

【Python实战】Python采集某评论区内容

总结

今日,咱们用了大篇幅的段落,来解说咱们是怎么获取了某技能渠道的谈论,没有什么是一次成功的,都是不断测验的进程。人生何尝不是如此。