V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yuanji
V2EX  ›  问与答

写爬虫时遇到的问题有关js

  •  
  •   yuanji · 2012 年 12 月 20 日 · 4424 次点击
    这是一个创建于 4775 天前的主题,其中的信息可能已经有所发展或是发生改变。
    使用python的urllib2但是页面中的链接是通过js生成的,所以获取不到,应该如何做呢?
    看到类似问题:http://stackoverflow.com/questions/4720342/python-processing-javascript-with-urllib2
    11 条回复    2015-03-04 21:49:35 +08:00
    shellex
        1
    shellex  
       2012 年 12 月 20 日   ❤️ 1
    我之前写了一个东西也遇到这个问题,很多东西是js生成的。考虑到js的执行还依赖页面环境,折腾这些好麻烦。

    我想要一个糙快猛的方法,于是考察了 http://seleniumhq.org/ 这种东西,不过觉得还是麻烦,我的最终解决方案是写了一个浏览器插件,然后让浏览器解决js生成页面的问题。当然,代价是运行这样的程序需要一个图形环境。。。

    我倒是希望有一个不依赖图形环境的库,给一个url,过一会儿,糙快猛地把解析好的页面递过来。
    shellex
        2
    shellex  
       2012 年 12 月 20 日
    补充一下,stackoverflow上的回答应该是正道,只不过实现起来麻烦...
    yuanji
        3
    yuanji  
    OP
       2012 年 12 月 20 日
    @shellex 非常同意,而至于浏览器插件我是毫无经验。不知道有什么建议没?Chrome OR Firefox
    binux
        4
    binux  
       2012 年 12 月 20 日   ❤️ 3
    @shellex 所以你需要的是 code.google.com/p/phantomjs/
    clowwindy
        5
    clowwindy  
       2012 年 12 月 20 日
    用过 pyqt,selenium,jsdom。它们都太耗 CPU 了,解析少量的网页还可以,上百万的话就无力了。如果你做的不是通用爬虫,而是垂直爬虫,最好手工分析页面,找到 json 地址,提取结构化数据。
    shellex
        6
    shellex  
       2012 年 12 月 20 日
    @binux 对对,这个真赞,要的就是这个。不过这个只说不依赖webkit实现,但是是否依赖X没说。
    shellex
        7
    shellex  
       2012 年 12 月 20 日
    @binux 噢我看到了,「Pure headless (no X11) on Linux」大赞
    yuanji
        8
    yuanji  
    OP
       2012 年 12 月 20 日
    @binux 看上去很不错
    thursday
        9
    thursday  
       2013 年 1 月 1 日
    @binux phantomjs 在gbk 页面处理的时候乱码有遇到过嘛?
    workaholic
        10
    workaholic  
       2013 年 3 月 21 日   ❤️ 1
    可以看看我的站 专注爬虫技术研究 v2sk.com
    zxmqwer
        11
    zxmqwer  
       2015 年 3 月 4 日
    @workaholic 这个网址打不开了啊 有个问题想请教下您。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2797 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 11:46 · PVG 19:46 · LAX 03:46 · JFK 06:46
    ♥ Do have faith in what you're doing.