python如何获取javascript动态产生的数据

原创 2015年11月20日 16:38:24

我现有有一个工作,需要从新浪新闻网站中获取数据,包括,标题,正文,和参与人数。


如图所示想得到 820,但是动态产生的。该新闻的url为http://news.sina.com.cn/c/2013-07-11/175827642839.shtml 陕西眉县发红头文件:官员卖水泥买房纳入考核
<a id="media_comment" href="#J_Comment_Wrap" rel="我有话说" class="J_Comment_Count_Txt" style="display:none;" action-type="anchorGo" action-data="y=-50" data-sudaclick="media_comment">我有话说</a>

这段代码产生的参与人数820,使用什么工具来获取?

像这种情况一般是异步请求json或者jsonp,直接监控network就行了:以chrome浏览器为例。
1.右键页面-审查元素-Network,切换到network面板,刷新页面。然后浏览器和web后端的通信会被记录下来。

排除掉图片,css等。
要获取当前新闻的评论数,浏览器发送给服务器的请求里面一定会有一个和当前新闻id有关的参数,(当然理论上也有通过referer来实现id传递的,但是毕竟太奇葩,不予考虑)。
所以
1. 如果method为GET,在Name里面一定有一个特殊的字符串,用来标识要请求的是哪个新闻的评论。
2. 或者method为POST,那么在POST的参数里面会有一个能标识当前新闻的参数:
这是微信公众平台获取聊天信息的action,fromfakeid就是聊天对方的id。

如果要用POST方法获取某个新闻的评论数,在这里也会有一个参数用来标识出这个新闻。(比如“175827642839”)。
然后一个个排查,图片css均不考虑,那么很容易就能找到
comment5.news.sina.com.cn
可以精简为comment5.news.sina.com.cn
其中的newsid参数1-1-27642839和175827642839关系很明显了。
这是一个js,里面有一句:"count": {"qreply": 706, "total": 823, "show": 95},你要找的就在这里。
可以直接从字符串里面截取到total,或者去掉js头部的“var data =”。得到一个json字符串,解析成对象也能获取total 。
在新闻页面的源码里面找“1-1-27642839” 可以找到“newsid:'1-1-27642839',”


分析过程基本结束。
然后,你可以:
1.分析新闻页代码,得到newsid
2.请求comment5.news.sina.com.cn“newsid”
3.解析获取到的js,从js中得到新闻评论数。







版权声明:本文为博主原创文章,未经博主允许不得转载。

Python爬虫抓取动态数据

一个月前实习导师布置的任务,通过网络爬虫获取深圳市气象局发布的降雨数据。界面如下。 心想,爬虫不太难的,当年跟zjb爬煎蛋网无(mei)聊(zi)图的时候,多么清高。由于接受任务后的一个月考试加作...
  • liuph_
  • liuph_
  • 2016年07月02日 17:12
  • 5669

python下利用Selenium获取动态页面数据

利用python爬取网站数据非常便捷,效率非常高,但是常用的一般都是使用BeautifSoup、requests搭配组合抓取静态页面,即网页上显示的数据都可以在html源码中找到,而不是网站通过js或...

Python 爬虫 PhantomJs 获取JS动态数据

Python 爬虫 PhantomJs 获取JS动态数据 字数2034 阅读2900 评论16 喜欢8 上篇文章我非常high的爬取了一个正常网页的数据 对是正常 不正...

Hadoop系统完全分布式集群搭建方法

Hadoop系统分布式集群搭建方法   1. linux操作系统安装 在每个节点上安装Linux操作系统(Centos6.3),安装时为各机器分别命名为 Master,slave1、slave2…。令...
  • zolalad
  • zolalad
  • 2013年09月09日 10:13
  • 5709

正则表达式之python实现

前文: 首先,什么叫正则表达式(Regular Expression)?     例如我们要判断字符串"adi_e32fv,Ls"里面是否含有子串"e32f",又例如我们在一个含百万个姓名的txt文件...

JavaScript实现动态添加页面的表格行数并获取数据

JavaScript实现动态添加页面的表格行数并获取数据,获取后的数据按照特殊的方式拼接存入数据库,用的时候再把它解析出来就行了。 车型 数量 ...

python3 网络爬虫(二)利用get请求获取网页的动态加载数据

环境:python3.4 win7 框架:scrapy 接着上一篇,这一次来说说如何获取网页上动态加载的数据: 作为初学者的我们,刚开始接触爬虫一般都只会爬取一些静...

selenium自动化测试工具开发python爬虫-动态加载页面数据获取

python开发跳过验证码的动态网页数据扒取
  • fan2273
  • fan2273
  • 2017年06月08日 17:07
  • 631

Python 爬虫 PhantomJs 获取JS动态数据

上篇文章我非常high的爬取了一个正常网页的数据 对是正常 这次研究的就是那些“不正常”的网页 当时是我太天真 后面发现水又深 介于现在JS H5的大趋势 大部分网站都是混入了JS数据加...

python3 网络爬虫(三)利用post请求获取网页的动态加载数据

环境:python3.4 win7 框架:scrapy上一篇讲了利用get请求获取王爷的动态加载数据,这一篇文章让我们来简单介绍一下如何用post请求来获取网页的动态加载数据,这一次我们面对的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python如何获取javascript动态产生的数据
举报原因:
原因补充:

(最多只允许输入30个字)