动态网页的爬取,首先是澎湃新闻。
点击进入网页, 点检查,刷新,选择xhr,就可以看到澎湃新闻的ajax请求,会返回一个无格式的网页。
网页是这样的。
随便点开一个。
preview一下,可以看到是新闻的内容。只不过渲染了一下。
现在是我们只想要 新闻标题,新闻时间,发布来源。
可以通过css提取。
把返回结果复制出来,用chrome打开,可以看到
使用简单的css选择器,就可以提取。
,接下来是程序
import requests
import re
import time
from scrapy import Selector
cookies = {
。。。
}
headers = {
。。。
}
params = (
('topCids', '14468164,14467932,14428130,14467889,14464573,14468222,14468155,14468199,14468103,'),
('pageidx', '10'),
('lastTime', '1631417006658'),
('startTime', '0'),
('allStartTime', '1631406393634'),
('filterContIds', '14468205,14464549,14468199,14468159,14468194,14468251,14468250,14468222,14468151,14468253'),
)
response = requests.get('https://www.thepaper.cn/load_chosen.jsp', headers=headers, params=params, cookies=cookies)
response.status_code
response.json()
response.text
selector = Selector(response)
news = selector.css("h2 a::text").extract()
print(news)
sources = selector.css(".pdtt_trbs a::text").extract()
print(sources)
news_time = selector.css("div.pdtt_trbs > span:nth-child(2)::text").extract()
print(news_time)
打印结果,没有问题。