如何用python抓取js生成的数据 - SegmentFault
如何用python抓取js生成的数据 - SegmentFault
如何用python抓取js生成的数据
想写一个爬虫,但是需要抓去的的数据是js生成的,在源代码里看不到,要怎么才能抓到呢? 最好是用python
7 个回答
如果对抓取的性能没有什么要求的话, 尝试一下selenium或者watir吧.
web自动化测试脚本用好了可以做很多事情.
利用你的浏览器执行好js, 然后再从dom里面取数据.另外一个情况, 如果你知道js是通过ajax或者api取数据的, 直接去抓数据源, 得到的不是json就是xml, 然后处理数据吧
基于webkit的http://phantomjs.org/,写js就行。
用python调它,用起来很爽。
对于JS生成的数据,你是没有办法获取的。除非直接遍历dom还是有可能……
一种办法是可以考虑用userscript,获取数据然后post到服务器等就随你自己的喜欢了
还有一种办法(假设是在win32),可以使用com组件调用IE然后获取动态生成的dom树,然后再做处理
当年试过改firefox的程序来做这个,不过也很麻烦
当然,你也可以用python什么自己实现一套浏览器和js引擎,那么这些数据肯定是你自己的了,不过还不如直接改或者用com组件
但是你说的爬虫爬取js生成的,那是没有办法的:(不管怎么样,一定要实现dom树,要让js能执行,那么就相当于你要实现一套简单的浏览器了
可以试着用 http://jeanphix.me/Ghost.py/ , http://code.google.com/p/pyv8/ 获得 JS 执行后的 dom。
目前认为比较好的一个方案是采用python+gtk+pywebkit,相当于基于webkit自己写一个定制的浏览器,这样可以在网页中插入自己的js,遍历dom等都是非常容易的。这个组合在ubuntu下还是非常容易搭建的。
sudo apt-get install python-gtk python-webkit,即可。
如何用python抓取js生成的数据 - SegmentFault的更多相关文章
- 爬虫之抓取js生成的数据
		有很多页面,当我们用request发送请求,返回的内容里面并没有页面上显示的数据,主要有两种情况,一是通过ajax异步发送请求,得到响应把数据放入页面中,对于这种情况,我们可以查看关于ajax的请求, ... 
- (转)如何用python抓取网页并提取数据
		最近一直在学这部分,今日发现一篇好文,虽然不详细,但是轮廓是出来了: 来自crifan:http://www.crifan.com/crawl_website_html_and_extract_inf ... 
- htmilunit-- 针对抓取js生成的数据
		public static String getHtml(String html){ // 模拟一个浏览器 @SuppressWarnings("resou ... 
- 使用 Python 抓取欧洲足球联赛数据
		Web Scraping在大数据时代,一切都要用数据来说话,大数据处理的过程一般需要经过以下的几个步骤 数据的采集和获取 数据的清洗,抽取,变形和装载 数据的分析,探索和预测 ... 
- 使用python抓取婚恋网用户数据并用决策树生成自己择偶观
		最近在看<机器学习实战>的时候萌生了一个想法,自己去网上爬一些数据按照书上的方法处理一下,不仅可以加深自己对书本的理解,顺便还可以在github拉拉人气.刚好在看决策树这一章,书里面的理论 ... 
- App的数据如何用python抓取
		前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. App中的数据可以用网络爬虫抓取么 答案是完全肯定的:凡是可以看到的APP数 ... 
- Python抓取国家医疗费用数据:国家名、人均开销
		前言 整个世界正被大流行困扰着,不同国家拿出了不同的应对策略,也取得了不同效果.这也是本文的脑洞来源,打算研究一下各国在医疗基础设置上的开支,对几个国家的医疗费用进行数据可视化. 由于没有找到最近一年 ... 
- Python抓取新浪新闻数据(二)
		以下是抓取的完整代码(抓取了网页的title,newssource,dt,article,editor,comments)举例: 转载于:https://blog.51cto.com/2290153/ ... 
- 关于python抓取google搜索结果的若干问题
		关于python抓取google搜索结果的若干问题 前一段时间一直在研究如何用python抓取搜索引擎结果,在实现的过程中遇到了很多的问题,我把我遇到的问题都记录下来,希望以后遇到同样问题的童 ... 
随机推荐
- leetcode Contains Duplicate python
			Given an array of integers, find if the array contains any duplicates. Your function should return t ... 
- HTTP 错误 401.3 - Unauthorized由于 Web 服务器上此资源的访问控制列表(ACL)解决办法
			对应站点目录的IUSR的权限没设造成的...在属性——>安全——> 高级 中把IUSR用户找出来添加好就OK了 注:IUSR(匿名访问 Internet 信息服务的内置帐户) 
- 在CentOS 7 / Gnome 3 双屏时设置主屏
			在Windows中设置扩展显示器为主屏的方式非常清楚,但在Linux中就不是那么明显了,下面介绍如何完成这个设置 ------------------------------------------- ... 
- 如何在windows的DOS窗口中正常显示中文(UTF-8字符)
			打开CMD.exe命令行窗口,通过 chcp命令改变代码页 UTF-8的代码页为65001,ANSI/OEM - 简体中文 GBK为936,window default OEM - 美国为437 如果 ... 
- oracle 11g RAC Grid Infrastructure
			grid infrastructure 软件介质下载: http://www.oracle.com/technetwork/database/database-technologies/cluster ... 
- php知识点集合
			--------------------------------------------------------- PHP知识大全 ------------------------ ... 
- 【C/C++多线程编程之九】pthread读写锁
			多线程编程之读写锁 Pthread是 POSIX threads 的简称,是POSIX的线程标准. pthread读写锁把对共享资源的訪问者分为读者和写者,读者仅仅对共享资源 ... 
- Android 手势锁的实现 为了让自己的应用程序的安全,现在
			转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/36236113 今天偶遇以github上gesturelock关于手势锁的一个样例 ... 
- java实现的Trie树数据结构
			近期在学习的时候,常常看到使用Trie树数据结构来解决这个问题.比方" 有一个1G大小的一个文件.里面每一行是一个词.词的大小不超过16字节,内存大小限制是1M. 返回频数最高的100个词. ... 
- DataSet -  DataTable -  DataRow  读取 xml 文件 + 搜索
			DataSet ds = XmlHelper.GetDataSetByXml(AppDomain.CurrentDomain.BaseDirectory + "/Config/ConfigN ... 
