爬取通过ajax动态加载的页面(实时监控华尔街见闻资讯与快讯)

本文介绍如何爬取华尔街见闻网站动态加载的内容,包括寻找API接口的方法及请求参数的解析过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习了几天如何使用scrapy去爬取静态网站,今天尝试去爬取动态加载的网站。选取的网站是华尔街见闻,文中不会像往常一样大篇幅讲解每一步该如何做,而是探讨如何爬取。

这里写图片描述
这里写图片描述

在源代码中无法获得全部数据(有的根本没数据),但是通过下拉滑条可以看到网址不变但有数据加载出来,毫无疑问这就是动态加载的网页。以下讲解如何去寻找api接口取获取数据。

打开开发者工具,选择Network,刷新,选择XHR,如图。
这里写图片描述

你可以从头开始一个个点击,查看响应(响应是指如下图的工具台上的响应)是否是你想要的数据。要么就滑动滑条,看看新的请求中名字是否有类似的请求,一般就是。

这里我们针对区块链数据,如图:
这里写图片描述

然后我们查看消息头的url,如‘https ://api-prod.wallstreetcn.com/apiv1/content/lives?channel=blockchain-channel&client=pc&cursor=1518567654&limit=20’,

请求的参数有:

channel=blockchain-channel
client=pc
cursor=1518567654
limit=20

在浏览器中打开这个url,待定系数法删除某个参数,看看哪些是必须的。
由此可以猜测

limit=20应该是限制请求数据条数,可删;

client=pc字面意思应该是pc端;

channel=blockchain-channel这可能是指区块链相关数据,不可删;

cursor=1518567654初步怀疑要么在页面中,要么是上一个页面加载时附带的信息,查找后没找到。怀疑可能是时间戳,time模块验证果真是当前时间。可删,但实验后发现没有cursor最多可加载99条数据。

这只是针对区块链一个版块,其他都类似寻找即可,但找寻过程中发现了一个api提供和所有的数据。接口:https://api-prod.wallstreetcn.com/apiv1/content/lives/pc?limit=40

浏览器打开,最好装一个json相关的插件,方便查看数据。如图
这里写图片描述
看英文就能知道global,blockchain,a_stock,us_stock,forex ,commodity分别对应分为六大板块:宏观,区块链,A股,美股,外汇,商品。

就是这样的

再附上资讯的接口api:

看清了这是代码别直接粘贴了

'https://api-prod.wallstreetcn.com/apiv1/content/articles?category={}&limit=20&platform=wscn-platform'.format(p) for p in
['global','shares','commodities','china','us','europe','japan','charts','economy']

limit参数可人为控制,还有就是cursor参数。你能发现他返回的数据中带有display_time,next_cursor这样的数据,后者结合limit可访问下一时间段的数据。你自己指定当前时间戳到某一时间戳之间也没问题。

转载于:https://www.cnblogs.com/JosonLee/p/9580508.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值