python怎么抓取“响应”中的数据呢?
想抓取新闻和报纸摘要的新闻标题,网址是:http://china.cnr.cn/news/index.html通过工具抓到端口是:http://apppc.cnr.cn/kuaixun
这个网址直接是打不开的,报“500错误”
但是在“响应”里是能看到数据的,
这样的怎么抓取啊?
用requests.get()抓不到数据呢
请大神们教我,谢谢! post 。。。。看清楚哦。不是get 请求方式不对 OPTIONS http://china.cnr.cn/news/20211110/t20211110_525657316.shtml
随便打开一个链接,分析一下就好了啊
打开f12,然后查看network
刷新网页
一直向下翻有一个rebang的请求,是请求你说的那个端口链接。
Request URL: https://apppc.cnr.cn/rebang
Request Method: POST
Status Code: 200 OK
Remote Address: 36.150.103.19:443
Referrer Policy: strict-origin-when-cross-origin
他的请求是post。
改个请求头,然后带上ua,防盗链再请求试试。
不过其实如果你只是单单要他的数据的话,直接请求http://china.cnr.cn/news/20211110/t20211110_525657316.shtml这个链接,然后用xpath提就行了把。 这个是post请求, Post啊这是 本帖最后由 ghell 于 2021-11-10 16:05 编辑
楼主这个需求,仅仅是抓新闻标题,直接在elements里用xpath定位就能找到,用浏览器F12仔细找一下就有,xpath=/html/body/div/div/div/div/div
如果要拿到network里的response内容,requests包是不行的,用selenium,然后分析浏览器的log,就可以了:logs = )['message']['params'] for log in browser.get_log('performance')]
或者直接用第三方增强的seleniumwire,可以直接获取request/response,原理是内置了一个proxy 你连代码都不放,怎么知道问题出在哪? 首先你要看下 请求方法其次,你要带上 UA头 等一些必要的请求头这样才能有数据返回 ```
import json
import requests
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36",
"Content-Type": "application/json; charset=UTF-8"
}
data = {
"day": "2021-11-10",
"lastNewsId": "0",
"pageIndex": 1,
"perPage": 10
}
resp = requests.post(url="http://apppc.cnr.cn/kuaixun", data=json.dumps(data), headers=headers)
print(resp.text.encode("ISO-8859-1").decode("utf-8"))
```
页:
[1]
2