需求:遍历关键词,爬取每个关键词的所有新闻标题时间和正文内容
网址:sou.chinanews.com/search.do
问题:
中新网搜索引擎无法请求,用Postman复制了所有请求头和表单数据依然无法请求,返回结果如下
请求搜索结果第一页可以使用get方法,之后的都需要用post方法,但是不知道为啥总是只能显示这个结果。
用selenium先进入主页再输入关键词点击搜索后跳转页面也是直接不显示,无结果。
不清楚这是什么反爬机制,求助各位大神们!!
需求:遍历关键词,爬取每个关键词的所有新闻标题时间和正文内容
网址:sou.chinanews.com/search.do
问题:
中新网搜索引擎无法请求,用Postman复制了所有请求头和表单数据依然无法请求,返回结果如下
请求搜索结果第一页可以使用get方法,之后的都需要用post方法,但是不知道为啥总是只能显示这个结果。
用selenium先进入主页再输入关键词点击搜索后跳转页面也是直接不显示,无结果。
不清楚这是什么反爬机制,求助各位大神们!!
headers缺少了cookie,这个网址通过js生成这__jsluid_h,__jsl_clearance这2个cookie,没有的话会输出js生成cookie然后再跳转到搜索结果页
示例代码如下
import requests
from lxml import etree
url="http://sou.chinanews.com/search.do"
data={'q':'csdn','ps':10,'start':0,'time_scope':0}
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Edg/96.0.1054.62',
'cookie':'__jsluid_h=9dbeee52c34a00df6bfd8e0b3ae76a7e; __jsl_clearance=1640226302.386|0|nWlIequQJKrEH5Dn13StWxop9vA%3D; JSESSIONID=4148D76AC6EA9FB9DC589E3EE30AF093'
}
for i in range(2):
data['start']=i*10
html=requests.post(url,headers=headers,data=data).text
tree=etree.HTML(html)
tables=tree.xpath('//div[@id="news_list"]/table')
for table in tables:
title=table.xpath('.//li[@class="news_title"]/a//text()')
print(title)