yuanji
V2EX  ›  问与答

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

  •  
  •   yuanji · Dec 20, 2012 · 4611 views
    This topic created in 4892 days ago, the information mentioned may be changed or developed.
    使用python的urllib2但是页面中的链接是通过js生成的,所以获取不到,应该如何做呢?
    看到类似问题:http://stackoverflow.com/questions/4720342/python-processing-javascript-with-urllib2
    11 replies    2015-03-04 21:49:35 +08:00
    shellex
        1
    shellex  
       Dec 20, 2012   ❤️ 1
    我之前写了一个东西也遇到这个问题,很多东西是js生成的。考虑到js的执行还依赖页面环境,折腾这些好麻烦。

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

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