首页/ 填坑/ 文章详情

Python 进阶篇:爬取微博用户评论信息

Python 微博 用户评论 API Requests Cookies 发布于 2021-03-04

解锁了Python的hello word! 成就,进阶到实战应用领域,先确立个小目标,尝试抓取一个网站的信息练手。新浪微博作为我国最大社交网站,有着太多让我们感兴趣的信息,对于萌新来说再适合不过的练习对象。

首先了解到新浪微博是个API式前后分离网站,页面上的信息全部通过异步请求API接口完成。这是个好消息,完全避免使用正则表达式过滤信息,降低我们获取信息的难度

如何获取API接口:

在Chrome浏览器,按F12进入调式模式。选择Network标签,再选择XHR标签,重新刷新页面,查看到所有触发的接口地址。

Python通过Requests模块可以模拟请求接口,获取想要的信息。举个例子:爬取微博用户评论信息。

PYimport requests

url = 'https://m.weibo.cn/comments/hotflow?id=4608227142276365&mid=4608227142276365&max_id_type=0'
headers = {'User-Agent': "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Mobile Safari/537.36"}
html = requests.get(url,headers = headers)

print json.loads(html.text)

看到成功获取数据后,不要太过兴奋,新浪微博这类老牌网站,目前只是给了小甜头而已。你想获取后续数据,需要用户登陆信息,产生Cookies值,Requests才能继续获取数据

如何获取Cookies值:

- 访问 chrome://flags/#site-isolation-trial-opt-out
- 修改 Disable site isolation 选项将 Default 改成 Disabled
- 点击 Relaunch 按钮,重启浏览器
- 回到 XHR 标签,点击的接口,查看 header 信息
- 在 Response Headers 选项卡上,会多出 cookie 的信息

PYimport requests

url = 'https://m.weibo.cn/comments/hotflow?id=4608227142276365&mid=4608227142276365&max_id=145309488653889&max_id_type=0'
headers = {'User-Agent': "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Mobile Safari/537.36"}
cookies = {'Cookie':'Response Headers的cookie值'}

html = requests.get(url,headers = headers,cookies = cookies)
result = json.loads(html.text)

※ 新浪微博的cookie有时间限制,cookie值失效会过期,请求自然会失败。

文章评论0 records

最新 最早

0

最新评论Latest comments

唐牛才是食神唐牛才是食神 06-15 10:51
(*°▽°*)八(*°▽°*)♪,解决了
唐牛才是食神唐牛才是食神 06-15 10:49
发现不得了的东西,今晚回去好好研究下...
胖螺胖螺 02-04 00:58
( ゜- ゜)つロ 在写了在写了。看到也有些感慨。因为站长前年在我原博客的留言,让我毅然选择去深造,选择读研,曾经我想过挺多东西的,还是自己本专业的适合我自己。在这先表达感谢。新年快乐!
强哥强哥 2021-12-08 15:49
怎么看文章作者是谁呀?
big2catbig2cat 2021-08-27 16:11
然而没什么用,smartpss不兼容老录像机,就算能看回放,很多时间点在回放里也看不到