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

Python 爬虫如何抓取 JavaScript 渲染后的内容呢?

  •  
  •   RqPS6rhmP3Nyn3Tm · 2016-01-08 22:30:32 +08:00 · 8204 次点击
    这是一个创建于 3241 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大家好,我就是上次发虫 https://www.v2ex.com/t/245894 的那个,现在想写个新的爬虫,但是遇到了一些问题,特来求助。
    原因是这样的,这次想看的漫画在上次那个网站没有,于是想再写一个。漫画的图片是通过 JavaScript 渲染的,因此没法直接抓到。
    Google 了一圈,文档很多都很老……
    如何解决呢?
    img

    26 条回复    2016-01-16 15:23:50 +08:00
    plqws
        1
    plqws  
       2016-01-08 22:37:59 +08:00
    PhantomJS
    feather12315
        2
    feather12315  
       2016-01-08 22:43:16 +08:00 via Android
    @plqws 问个问题: phantomJS 能否与异步库 asynico 一起用呢
    feather12315
        3
    feather12315  
       2016-01-08 22:43:48 +08:00 via Android
    提供另一个思路,分析 Ajax 接口,直接抓取,速度很快
    longaiwp
        4
    longaiwp  
       2016-01-08 23:08:49 +08:00
    分析到底是怎么渲染的不是更好么(话说我似乎在琉璃见过楼主)
    windfarer
        5
    windfarer  
       2016-01-08 23:12:02 +08:00
    看浏览器的 network log ,模拟 ajax 请求
    RqPS6rhmP3Nyn3Tm
        6
    RqPS6rhmP3Nyn3Tm  
    OP
       2016-01-08 23:12:19 +08:00
    @longaiwp 不懂 JS ……
    都是司机,握手
    crab
        7
    crab  
       2016-01-08 23:24:00 +08:00
    bdbai
        8
    bdbai  
       2016-01-08 23:38:05 +08:00 via iPhone
    建议啃啃 js + 抓包,那些模拟浏览器的效率太差。
    RqPS6rhmP3Nyn3Tm
        9
    RqPS6rhmP3Nyn3Tm  
    OP
       2016-01-08 23:40:37 +08:00
    @bdbai 高三党表示没有太多时间啃 JS …
    bdbai
        10
    bdbai  
       2016-01-09 00:04:53 +08:00 via iPhone
    @BXIA 高二党表示高一有时间啃的啊...不过高三了还是尽量少搞这些东西吧。
    FrankFang128
        11
    FrankFang128  
       2016-01-09 00:06:37 +08:00 via Android
    用啥翻腾,看请求
    aprikyblue
        12
    aprikyblue  
       2016-01-09 00:08:25 +08:00
    高二狗路过。。先 mark
    lz 高三这么晚还不睡
    RqPS6rhmP3Nyn3Tm
        13
    RqPS6rhmP3Nyn3Tm  
    OP
       2016-01-09 00:10:14 +08:00
    @aprikyblue 周末怕啥
    aprikyblue
        14
    aprikyblue  
       2016-01-09 00:13:16 +08:00
    @BXIA ...周六不上?
    RqPS6rhmP3Nyn3Tm
        15
    RqPS6rhmP3Nyn3Tm  
    OP
       2016-01-09 00:14:25 +08:00
    @aprikyblue 不上😄
    icedx
        16
    icedx  
       2016-01-09 00:19:53 +08:00
    如果想看漫画呢 https://gist.github.com/anonymous/c95fd30a078b74e83e32
    如果想要解法呢 请回复小埋大法好
    RqPS6rhmP3Nyn3Tm
        17
    RqPS6rhmP3Nyn3Tm  
    OP
       2016-01-09 00:31:53 +08:00
    @icedx 海老名大法好
    上次看你发过这个了,是只能爬 dmzj.com 的吧?
    aWangami
        18
    aWangami  
       2016-01-09 01:47:09 +08:00
    找到一个接口, LZ 说的是解析这个 JS 吗?

    http://www.dm5.com/m178597/chapterfun.ashx?cid=178597&page=1&key=&language=1&gtk=6

    eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('f 8(){1 4=3;1 a=\'9\';1 7="g://h.k-j-6-6.c.e/b/p/3";1 2=["/o.5","/q.5"];l(1 i=0;i<2.m;i++){2[i]=7+2[i]+\'?4=3&a=9\'}n 2}1 d;d=8();',27,27,'|var|pvalue|178597|cid|jpg|113|pix|dm5imagefun|738c55526d53b127b60fb8550a178db9|key|17|cdndm5||com|function|http|manhua1023||147|61|for|length|return|1_9267|16594|2_5542'.split('|'),0,{}))

    ["http://manhua1023.61-147-113-113.cdndm5.com/17/16594/178597/1_9267.jpg?cid=178597&key=738c55526d53b127b60fb8550a178db9", "http://manhua1023.61-147-113-113.cdndm5.com/17/16594/178597/2_5542.jpg?cid=178597&key=738c55526d53b127b60fb8550a178db9"]
    aWangami
        19
    aWangami  
       2016-01-09 01:52:52 +08:00
    icedx
        20
    icedx  
       2016-01-09 03:31:30 +08:00
    shyling
        21
    shyling  
       2016-01-09 11:19:19 +08:00 via iPad
    @aprikyblue 马克是谁
    aprikyblue
        22
    aprikyblue  
       2016-01-09 12:23:54 +08:00
    @shyling
    ....表卖萌
    chrisbarry
        23
    chrisbarry  
       2016-01-09 13:26:23 +08:00
    selenium+PhantomJS 挺好用,就是有点点慢。
    from selenium import webdriver
    driver = webdriver.PhantomJS(executable_path='.......')
    shyling
        24
    shyling  
       2016-01-09 20:17:31 +08:00
    @aprikyblue 请告诉我
    wangzy
        25
    wangzy  
       2016-01-09 22:17:33 +08:00
    以前写过一个爬虫,也是爬漫画网站,也是 js 渲染,我用的 java ,然后用的 java 自带的 js 解析器,做解析后分析然后找出链接下载, python 有没有类似的 js 解析器不清楚,如果有的话应该没问题或者看能否调用 nodejs 这类东东
    RqPS6rhmP3Nyn3Tm
        26
    RqPS6rhmP3Nyn3Tm  
    OP
       2016-01-16 15:23:50 +08:00
    @icedx 有一点小 bug ,不过感谢思路
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1007 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 22:49 · PVG 06:49 · LAX 14:49 · JFK 17:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.