美文网首页
十. 爬取动态页面 - splash的使用

十. 爬取动态页面 - splash的使用

作者: 橄榄的世界 | 来源:发表于2018-03-13 16:56 被阅读0次

    使用 scrapy+ splash 爬取动态页面。

    1.splash的安装

    ①splash的安装可参考这篇文章:https://www.jianshu.com/p/4052926bc12c

    ②由于是Win7系统,安装Docker ToolBox。


    ③安装完成后,以管理员身份运行“Docker Quickstart Terminal”。


    ④下载并安装secureCRT:在连接对话框输入docker的地址:默认是192.168.99.100,上面的图里看得见:),用户名:docker,密码:tcuser。

    ⑤在Docker中安装splash服务:
    sudo docker pull scrapinghub/splash

    ⑥启动splash服务(通常一般使用http模式 ,可以只启动一个8050端口)
    sudo docker run -p 8050:8050 -p 8051:8051 scrapinghub/splash

    #Splash 将运行在 0.0.0.0 at ports 8050 (http), 8051 (https) and 5023 (telnet)。
    sudo docker run -p 5023:5023 -p 8050:8050 -p 8051:8051 scrapinghub/splash
    

    ⑦服务启动后,打开浏览器输入192.168.99.100:8050查看服务启动情况。输入[www.baidu.com],点击Render me 按钮,立马可以看见在服务器端渲染后的百度页面。

    image.png
    2.splash与python的搭配使用
    import requests
    from scrapy.selector import Selector
    ##注意使用了192.168.99.100来替代localhost,因为localhost在win7中默认为172.0.0.1.
    splash_url ="http://192.168.99.100:8050/render.html"  
    args= {'url':'http://quotes.toscrape.com/js','timeout':5,'image':0}
    response = requests.get(splash_url,params=args)
    sel = Selector(response)
    sel.css('div.quote span.text::text').extract()
    

    使用上述代码即可获取JS加载的信息,结果为:


    splash最常用的两个端点:

    • render.html: 提供JavaScript页面渲染服务。
    • execute: 执行用户自定义的脚本(lua),利用该端点可在页面中执行JavaScript代码。

    相关文章

      网友评论

          本文标题:十. 爬取动态页面 - splash的使用

          本文链接:https://www.haomeiwen.com/subject/kwqzfftx.html