如何用python抓取js生成的数据 - SegmentFault

如何用python抓取js生成的数据

想写一个爬虫,但是需要抓去的的数据是js生成的,在源代码里看不到,要怎么才能抓到呢? 最好是用python

Yiner224

2012年11月22日提问

7 个回答


3赞
采纳

如果对抓取的性能没有什么要求的话, 尝试一下selenium或者watir吧.
web自动化测试脚本用好了可以做很多事情.
利用你的浏览器执行好js, 然后再从dom里面取数据.

另外一个情况, 如果你知道js是通过ajax或者api取数据的, 直接去抓数据源, 得到的不是json就是xml, 然后处理数据吧

KJ919

2012年11月22日回答

1赞
采纳

对于JS生成的数据,你是没有办法获取的。除非直接遍历dom还是有可能……

一种办法是可以考虑用userscript,获取数据然后post到服务器等就随你自己的喜欢了

还有一种办法(假设是在win32),可以使用com组件调用IE然后获取动态生成的dom树,然后再做处理

当年试过改firefox的程序来做这个,不过也很麻烦

当然,你也可以用python什么自己实现一套浏览器和js引擎,那么这些数据肯定是你自己的了,不过还不如直接改或者用com组件

但是你说的爬虫爬取js生成的,那是没有办法的:(不管怎么样,一定要实现dom树,要让js能执行,那么就相当于你要实现一套简单的浏览器了

巫山霏云120

2012年11月22日回答

0赞
采纳

目前认为比较好的一个方案是采用python+gtk+pywebkit,相当于基于webkit自己写一个定制的浏览器,这样可以在网页中插入自己的js,遍历dom等都是非常容易的。这个组合在ubuntu下还是非常容易搭建的。
sudo apt-get install python-gtk python-webkit,即可。

lunny58

2012年11月22日回答

如何用python抓取js生成的数据 - SegmentFault的更多相关文章

  1. 爬虫之抓取js生成的数据

    有很多页面,当我们用request发送请求,返回的内容里面并没有页面上显示的数据,主要有两种情况,一是通过ajax异步发送请求,得到响应把数据放入页面中,对于这种情况,我们可以查看关于ajax的请求, ...

  2. (转)如何用python抓取网页并提取数据

    最近一直在学这部分,今日发现一篇好文,虽然不详细,但是轮廓是出来了: 来自crifan:http://www.crifan.com/crawl_website_html_and_extract_inf ...

  3. htmilunit-- 针对抓取js生成的数据

    public static String  getHtml(String html){        // 模拟一个浏览器          @SuppressWarnings("resou ...

  4. 使用 Python 抓取欧洲足球联赛数据

    Web Scraping在大数据时代,一切都要用数据来说话,大数据处理的过程一般需要经过以下的几个步骤    数据的采集和获取    数据的清洗,抽取,变形和装载    数据的分析,探索和预测    ...

  5. 使用python抓取婚恋网用户数据并用决策树生成自己择偶观

    最近在看<机器学习实战>的时候萌生了一个想法,自己去网上爬一些数据按照书上的方法处理一下,不仅可以加深自己对书本的理解,顺便还可以在github拉拉人气.刚好在看决策树这一章,书里面的理论 ...

  6. App的数据如何用python抓取

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. App中的数据可以用网络爬虫抓取么 答案是完全肯定的:凡是可以看到的APP数 ...

  7. Python抓取国家医疗费用数据:国家名、人均开销

    前言 整个世界正被大流行困扰着,不同国家拿出了不同的应对策略,也取得了不同效果.这也是本文的脑洞来源,打算研究一下各国在医疗基础设置上的开支,对几个国家的医疗费用进行数据可视化. 由于没有找到最近一年 ...

  8. Python抓取新浪新闻数据(二)

    以下是抓取的完整代码(抓取了网页的title,newssource,dt,article,editor,comments)举例: 转载于:https://blog.51cto.com/2290153/ ...

  9. 关于python抓取google搜索结果的若干问题

    关于python抓取google搜索结果的若干问题     前一段时间一直在研究如何用python抓取搜索引擎结果,在实现的过程中遇到了很多的问题,我把我遇到的问题都记录下来,希望以后遇到同样问题的童 ...

随机推荐

  1. 全局通知Notification

    Notification 全局通知 关于全局通知的个人理解: 即有一个发射消息的,在整个应用中任何对象都可以接受这个消息 但是无论是哪个对象接受消息,都要在这个对象结束时移除消息 简单的说 就是给对象 ...

  2. ASP.NET MVC Controller向View传值方式总结

    Controller向View传值方式总结 总结发现ASP.NET MVC中Controller向View传值的方式共有6种,分别是: ViewBag ViewData TempData 向普通Vie ...

  3. 浅谈Mybatis(三)

    一.动态SQL 1.sql片段 解决sql语句的冗余代码问题. <sql id="SELECT_T_USER"> select id,name,password,bir ...

  4. SQL 处理空值

    问题: 在数据库中经常会有为null和''的值的列,在查询的时候,我们需要将它们转化成有效的值. 解决方案: 在emp表中的comm注释有的为null有的为'',在查询的时候 我们希望没有注释的显示为 ...

  5. Linux 组与用户

    组: 添加: groupadd groupName -g groupID  --> groupadd dba -g 502 删除: groupdel  groupName             ...

  6. mobile&nbsp;web&nbsp;手机开发

    1.   -webkit-tap-highlight-color -webkit-tap-highlight-color:rgba(255,255,255,0); 用来把android上点击网页时出现 ...

  7. Linux中的IO复用接口简介(文件监视?)

    I/O复用是Linux中的I/O模型之一.所谓I/O复用,指的是进程预先告诉内核,使得内核一旦发现进程指定的一个或多个I/O条件就绪,就通知进程进行处理,从而不会在单个I/O上导致阻塞. 在Linux ...

  8. android下tcpdump抓包

    tcpdump是最快捷方便的抓包方式,还可以加深对网络协议的理解.android下可以通过如下方式抓包: 1 Android上启动tcpdump Android设备可以把tcpdump的可执行文件上传 ...

  9. 51nod 1244 莫比乌斯函数之和(杜教筛)

    [题目链接] http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1244 [题目大意] 计算莫比乌斯函数的区段和 [题解] 利 ...

  10. golang(5):编写WebSocket服务,client和html5调用

    本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/46882777 转载请必须注明出处! 1.关于websocket HTML5定义了 ...