likes
comments
collection
share

某热榜数据爬虫详解

作者站长头像
站长
· 阅读数 13

过了小长假之后工作一直不在状态,今天都周二了才算缓过来,再舒适圈中待久了就容易变得懒作,继续采集新闻热榜数据。今天采集雷锋网。

某热榜数据爬虫详解

  1. 话不多说直接开始,还是此案分析一下网站结构,网站地址

某热榜数据爬虫详解 ok,到首页之后直接看最新文章,这里就是要采集的列表页数据了,有了数据列表就翻个页看看数据接口什么样子的

某热榜数据爬虫详解 滚轮一直滚动,进度条回滚标识翻页,通过抓包可以发现,这个数据是在接口中接口中又放了html源码。也没其他的什么参数只有翻页参数,那这个列表页就ok了,然后再看一下详情页数据接口是什么样子的。

某热榜数据爬虫详解 可见详情页数据也是在html中的,后面那一溜应该是文章的id,这个id也是在列表的超链接中的

某热榜数据爬虫详解 ok,到这里就明了了。

  1. 先请求列表页,解析出来所有的文章
cookies = {
    'SameSite': 'None',
    'PHPSESSID': '0c36b82b9e599b2dcd41da91f5a7d907',
}

headers = {
    'Accept': 'application/json, text/javascript, */*; q=0.01',
    'Accept-Language': 'zh-CN,zh;q=0.9',
    'Cache-Control': 'no-cache',
    'Connection': 'keep-alive',
    # 'Cookie': 'SameSite=None; PHPSESSID=0c36b82b9e599b2dcd41da91f5a7d907',
    'Pragma': 'no-cache',
    'Referer': 'https://www.leiphone.com/',
    'Sec-Fetch-Dest': 'empty',
    'Sec-Fetch-Mode': 'cors',
    'Sec-Fetch-Site': 'same-origin',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36',
    'X-Requested-With': 'XMLHttpRequest',
    'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="100", "Google Chrome";v="100"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Windows"',
}

response = requests.get('https://www.leiphone.com/site/AjaxLoad/page/3', cookies=cookies, headers=headers).json()['html']
print('')
res = etree.HTML(response)
data_list = res.xpath("//li/div/div/h3/a")
for data in data_list:
    title = data.xpath("./text()")[0].replace('\r\n\t\t\t\t','').replace('\t\t\t','').replace(' ','')
    url = data.xpath("./@href")[0]
    print(title,url)

某热榜数据爬虫详解 然后再请求详情页数据并使用gne解析出来内容

cookies = {
    'SameSite': 'None',
    'PHPSESSID': '0c36b82b9e599b2dcd41da91f5a7d907',
}

headers = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
    'Accept-Language': 'zh-CN,zh;q=0.9',
    'Cache-Control': 'no-cache',
    'Connection': 'keep-alive',
    # 'Cookie': 'SameSite=None; PHPSESSID=0c36b82b9e599b2dcd41da91f5a7d907',
    'Pragma': 'no-cache',
    'Sec-Fetch-Dest': 'document',
    'Sec-Fetch-Mode': 'navigate',
    'Sec-Fetch-Site': 'none',
    'Sec-Fetch-User': '?1',
    'Upgrade-Insecure-Requests': '1',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36',
    'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="100", "Google Chrome";v="100"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Windows"',
}

response = requests.get(
    url,
    cookies=cookies,
    headers=headers,
)
extractor = GeneralNewsExtractor()
result = extractor.extract(response.text, noise_node_list=['//div[@class="comment-list"]'])
print(result)
input()

某热榜数据爬虫详解 ok,没什么问题,通过使用gne这么久以来感觉这个自动解析库并不是一无是处,还是有些用处的