欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > 爬虫案例——网易新闻数据的爬取

爬虫案例——网易新闻数据的爬取

2024/10/26 2:27:08 来源:https://blog.csdn.net/qq_53256193/article/details/142692583  浏览:    关键词:爬虫案例——网易新闻数据的爬取

案例需求:

1.爬取该新闻网站——(网易新闻)的数据,包括标题和链接

2.爬取所有数据(翻页参数)

3.利用jsonpath解析数据

分析:

该网站属于异步加载网站——直接网页中拿不到,需要借助fidder抓包工具拿取

可以看到第一页请求网址

https://news.163.com/special/cm_yaowen20200213/?callback=data_callback

6a92f0e00544494d8c21cf6b292dd5b6.png

第二页请求网址

https://news.163.com/special/cm_yaowen20200213_02/?callback=data_callback

4dc35985765e4390b31a2f426e9401c3.png

第五页(最后一页)请求网址:

https://news.163.com/special/cm_yaowen20200213_05/?callback=data_callback

2b51c098461745cd9e30bd5993d62358.png

所以翻页代码如下:

首页地址为第一页地址

for i in range(2,6):print('==========', '当前是第{}页'.format(i))page_url = 'https://news.163.com/special/cm_yaowen20200213_0{}/?callback=data_callback'.format(i)

利用josnpath解析数据

cd754152e4124f5d8cae70ca625e3d5b.png

因为该网页不是常规的josn源码数据,所以需要进行一些处理

text_data=data.split('data_callback(')[1]
# print(text_data)
text_data1 = text_data.split(')')[0]
# print(text_data1)
json_data = json.loads(text_data1)
title = jsonpath(json_data,'$..title')
url = jsonpath(json_data,'$..docurl')

处理解析数据

for i,j in zip(title,url):print(i)print(j)print('=======================================')

示例代码:

import requests
from jsonpath import jsonpath
import json
def get_data(url):headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36'}r = requests.get(url,headers=headers)# print(r.text)return r.text# print(r.text)# print(r.json())
def parse_data(data):text_data=data.split('data_callback(')[1]# print(text_data)text_data1 = text_data.split(')')[0]# print(text_data1)json_data = json.loads(text_data1)title = jsonpath(json_data,'$..title')url = jsonpath(json_data,'$..docurl')for i,j in zip(title,url):print(i)print(j)print('=======================================')# print(title)# print(url)
if __name__ == '__main__':url = "https://news.163.com/special/cm_yaowen20200213/?callback=data_callback "# h = get_data()# parse_data(h)for i in range(2,6):print('==========', '当前是第{}页'.format(i))page_url = 'https://news.163.com/special/cm_yaowen20200213_0{}/?callback=data_callback'.format(i)h = get_data(page_url)parse_data(h)

6fe1a5bc51994e42a2d68a1c2185b90f.png

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com