当前位置:网站首页>Requests库(十二)实战获取今日头条24小时热文

Requests库(十二)实战获取今日头条24小时热文

2021-03-15 16:54:51 雷子


Requests库分享系列:

Requests库(一)

Requests库(二)

Requests库(三)如何获取接口传参参数

Requests库(四)如何传递不一样的参数

Requests库(五)接口返回状态码

Requests库(六)接口返回响应头和请求Cookies

Requests库(七)重定向和超时

Requests(八)代理和会话对象

Requests库(九)准备的请求和SSL 证书验证

Requests库(十)接口请求认证

Requests库(十一)实战请求钉钉群机器人


在前面我们分享了Requests请求有接口文档的接口,如果没有接口文档的怎么办呢,答案是一样的通过抓包,我们这节课来看下,如何让通过抓包的形式来实现接口请求呢。

首先我们准备chrome浏览器,开发工具pycharm即可。

我们用chrome打开https://www.toutiao.com/。然后我们按下系统的F12键。mac系统点击fn可以出来f键选择。

我们选择Network,然后选XHR 进行筛选。然后我们去刷新浏览器。

我们可以看到有很多请求,接下来,我们就是根据24小时热闻的内容,去查找对应的接口即可。

我们很快可以找到

内容对的上,我们看下请求的headers

那么我们有请求的url,应该是可以正常请求的,我们可以打开pycharm,去请求下。

import requests
url='https://www.toutiao.com/api/pc/realtime_news/?_signature=_02B4Z6wo00d01HFrJ.AAAIBAlpBtHMhJ4yhxbiNAAEOUOMgduWi1nxUqrwUmfzByHND8uASdwcNZKZ35gyF49T6M2M-abA8MyUyet2CX4y6JVKNDaHcynZ9OCwrrgBTqma4oiT0taSF7oO.T70'
reponse=requests.get(url)
if reponse.status_code==200:
    print(reponse.json())

当我们兴高采烈的去请求的时候发现,结果并不是如人所愿。

这是为什么呢,说明我们的请求是有问题的。这个时候呢,去看请求参数,

这个就是一个签名,那么我们应该怎么去发现呢,这里呢,首先要想到请求头。

我们可以去复制出来尝试一下。我从中去这么去探索的,为啥有人会这么问,为啥这么写呢,我的判断呢,其实可能是接口需要验证你是不是正常的浏览器,我们可以去慢慢调试,当然有的还会校验其他信息,我们去请求的时候,可以去试试即可。

import requests
headers={
"accept": "application/json, text/plain, */*",
"user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
}
url='https://www.toutiao.com/api/pc/realtime_news/?_signature=_02B4Z6wo00d01HFrJ.AAAIBAlpBtHMhJ4yhxbiNAAEOUOMgduWi1nxUqrwUmfzByHND8uASdwcNZKZ35gyF49T6M2M-abA8MyUyet2CX4y6JVKNDaHcynZ9OCwrrgBTqma4oiT0taSF7oO.T70'
reponse=requests.get(url,headers=headers)
if reponse.status_code==200:
    print(reponse.json())

我们看下请求数据。

那么我们就可以接下来去处理这些数据了。

比如我要获取里面所有的title 要怎么取呢,其实是简单的,首先数据都在data里面,data是一个list,我们遍历list,然后list里面的每一项都是一个dict,我们很好拿到数据。

import requests
headers={
"accept": "application/json, text/plain, */*",
"user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
}
url='https://www.toutiao.com/api/pc/realtime_news/?_signature=_02B4Z6wo00d01HFrJ.AAAIBAlpBtHMhJ4yhxbiNAAEOUOMgduWi1nxUqrwUmfzByHND8uASdwcNZKZ35gyF49T6M2M-abA8MyUyet2CX4y6JVKNDaHcynZ9OCwrrgBTqma4oiT0taSF7oO.T70'
reponse=requests.get(url,headers=headers)
if reponse.status_code==200:
    data=(reponse.json()['data'])
    for i in data:
        print(i['title'])

我们看下结果:

那么我们是不是可以和我们之前的钉钉机器人结合起来,部署一个脚本,每天给我们的钉钉群里面定时推送一下,24小时内的热闻呢?答案肯定是可以的,具体怎么做,其实已经很简单了。


如果觉得这篇文章还不错,来个【分享、点赞、在看】三连吧,让更多的人也看到~

本文分享自微信公众号 - 雷子说测试开发(gh_645316d0d7b6)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间: 2020-12-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

版权声明
本文为[雷子]所创,转载请带上原文链接,感谢
https://cloud.tencent.com/developer/article/1801800

随机推荐