Python 爬虫如何抓取 Javascript 渲染后的内容呢? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
RqPS6rhmP3Nyn3Tm
V2EX    问与答

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

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

    大家好,我就是上次发虫 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
    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 ,不过感谢思路
    关于   nbsp; 帮助文档     自助推广系统     博客     API     FAQ     Solana     3849 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 05:14 PVG 13:14 LAX 21:14 JFK 00:14
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86