学习了几天如何使用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可访问下一时间段的数据。你自己指定当前时间戳到某一时间戳之间也没问题。

---恢复内容结束---

学习了几天如何使用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/9229419.html

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

  1. python 爬虫 快看漫画整站爬取(解决动态加载漫画图片地址、漫画图片合成长图、图片文件排序等问题)

    运行结果: 这个是爬取的目标 爬取之后建立文件夹,合成长图之后删除文件夹 这里仅仅做几组演示, 由于合成的图片有单列长度限制,所有拆分成两列 开始: 首先打开网站,找到某个漫画,发现点鼠标右键不可以, ...

  2. python3 爬虫日记(三) 爬取堆糖动态加载网页

    1.分析:进入堆糖网后我们在分类找到插画绘画进入这个分类后发现好多图片,下拉后发现会有不断的图片刷新出来,这就是堆糖采用了动态加载网页. 2.用开发者工具(F12)分析:按一下F12,找到networ ...

  3. Python爬取东方财富网任意股票任意时间段的Ajax动态加载股票数据

    导言 最近由于需求想爬取以下东方财富网的股票数据,但是发现没有想象那么简单,接下来我会讲述一下我遇到的问题以及是如何解决,最后成功的爬出了想要的数据. 查看网页源码 首先我们F12打开东方财富网网页源 ...

  4. python翻页功能url不变_爬取Ajax动态加载和翻页时url不变的网页

    这两天投了一家公司的爬虫实习生,笔试题是完成一个爬虫的小需求.网站没有什么反爬的高级技巧.但是有非常常见的,并不是针对我们爬虫的,却让我们新手很难理解的ajax动态加载技术和乍一看不明白的翻页时不变的 ...

  5. 关于使用scrapy框架编写爬虫以及Ajax动态加载问题、反爬问题解决方案

    关于使用scrapy框架编写爬虫以及Ajax动态加载问题.反爬问题解决方案 参考文章: (1)关于使用scrapy框架编写爬虫以及Ajax动态加载问题.反爬问题解决方案 (2)https://www. ...

  6. jquery table ajax,JQuery Ajax动态加载Table数据的实例讲解

    我们在jsp定义一个select和一个table,要求实现根据select的选值,动态加载table数据. table第一次加载数据的function定义如下: function loadData() ...

  7. ajax 动态加载的内容,相应的js也要在回调里加载

    ajax 动态加载的内容,相应的js也要在回调里加载,不然之前已经写好的监听函数,其实没有绑定到后来动态加载的元素上的,所以要写成回调的形式比如: $(".getStudent") ...

  8. html select ajax,AJAX 动态加载后台数据 绑定select的方法

    直接上代码 是可以用的,后台代码我就不贴了,我相信后台代码大家都会,直接返回json数据,我是前端比较差的,所以喜欢把每次不会的全部记起来 html代码 //下拉框数据动态加载 js代码 $.ajax ...

  9. ajax动态拼接复选框样式,JavaScript 通过Ajax 动态加载CheckBox复选框

    废话不多说了,直接给大家贴代码了,具体代码如下所示: //动态加载年份checkbox by dongch 20170830 function GetCompareYearByStationName( ...

最新文章

  1. 堡垒机高危命令正则表达式
  2. 一篇文章读懂阿里云负载均衡性能保障型实例
  3. 魅蓝5s的android系统版本,魅族魅蓝5S的手机系统是什么
  4. iphone双卡_不吹不黑,今年的四款iPhone到底谁最值得买?
  5. 0X8009310B (ASN:276) win7安装证书时出现错误消息:找不到与此证书文件相关联的证书申请微软官方文档
  6. 20175212童皓桢 Java实验二-面向对象程序设计实验报告
  7. numpy的基本使用2
  8. 线性表实现一元多项式操作
  9. Gulp简介、gulp基本使用步骤、gulp-cli工具、gulpfile.js文件、gulp插件
  10. Oracle数据库安装Version12c
  11. 从阿里腾讯的大会上得到的启示,来分享一些可视化大屏
  12. unity3d ppsspp模拟器中的post processing shader在unity中使用
  13. Unity MRTK(一)
  14. 金融量化-SMA_移动平均及双均线模型
  15. 下载官方Intel的Windows 10网卡驱动
  16. 遗传算法基本原理及在互联网中的应用
  17. 【MySQL 数据库】聚合查询和联合查询操作
  18. 市场营销方式详尽客户调查报告:Inbound vs. Outbound
  19. Escape HDU - 3533
  20. 对比分析法(Comparative Analysis Approach)

热门文章

  1. 再谈UI设计的入门与进阶
  2. ZZULIOJ:1101: 逆序数字(函数专题)
  3. flink消费kafka从指定时间消费offset的日志
  4. 用 Python 写一个天天酷跑 | 内附源码
  5. 满城尽带黄金甲的二三事
  6. IBM放弃SoftLayer品牌 将其归入Bluemix之中
  7. 通过matlab对比不同调制方式下的球形译码误码率仿真,包括BPSK,QPSK,8PSK,4QAM以及16QAM
  8. jQuery的change()事件
  9. 03--2017同济大学电信院信息与通信工程系复试总结
  10. 《当代经理人》:阿里巴巴:冬天如此寒冷!