欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Phantomjs抓取渲染JS后的網(wǎng)頁(yè)(Python代碼)

 更新時(shí)間:2016年05月13日 09:09:10   投稿:hebedich  
phantomjs:我的理解就是它是一個(gè)無(wú)顯示的瀏覽器,也就是說(shuō)除了不能顯示頁(yè)面內(nèi)容以外,瀏覽器能干的活兒它基本上都能干。下面我們就來(lái)利用他做點(diǎn)有趣的事情

最近需要爬取某網(wǎng)站,無(wú)奈頁(yè)面都是JS渲染后生成的,普通的爬蟲(chóng)框架搞不定,于是想到用Phantomjs搭一個(gè)代理。

Python調(diào)用Phantomjs貌似沒(méi)有現(xiàn)成的第三方庫(kù)(如果有,請(qǐng)告知小編),漫步了一圈,發(fā)現(xiàn)只有pyspider提供了現(xiàn)成的方案。

簡(jiǎn)單試用了一下,感覺(jué)pyspider更像一個(gè)為新手打造的爬蟲(chóng)工具,好比一個(gè)老媽子,有時(shí)無(wú)微不至,有時(shí)喋喋不休。 輕巧的小工具應(yīng)該更受人喜愛(ài),我也懷著一點(diǎn)私心,可以帶著我最愛(ài)的BeautifulSoup一塊兒用,而不用再學(xué)PyQuery(pyspider用來(lái)解析HTML),更不用忍受瀏覽器寫(xiě)Python的糟糕體驗(yàn)(偷笑)。

所以花了一個(gè)下午的時(shí)間,把pyspider當(dāng)中實(shí)現(xiàn)Phantomjs代理的部分拆了出來(lái),獨(dú)立成一個(gè)小的爬蟲(chóng)模塊,希望大家會(huì)喜歡(感謝binux?。?/p>

準(zhǔn)備工作

你當(dāng)然要有Phantomjs,廢話?。↙inux下最好用supervisord守護(hù),必須保持抓取的時(shí)候Phantomjs一直處于開(kāi)啟狀態(tài))
用項(xiàng)目路徑下的phantomjs_fetcher.js啟動(dòng):phantomjs phantomjs_fetcher.js [port]
安裝tornado依賴(使用了tornado的httpclient模塊)

調(diào)用是超級(jí)簡(jiǎn)單的

from tornado_fetcher import Fetcher

# 創(chuàng)建一個(gè)爬蟲(chóng)
>>> fetcher=Fetcher(
  user_agent='phantomjs', # 模擬瀏覽器的User-Agent
  phantomjs_proxy='http://localhost:12306', # phantomjs的地址
  poolsize=10, # 最大的httpclient數(shù)量
  async=False # 同步還是異步
  )
# 開(kāi)始連接Phantomjs的代碼,可以渲染JS!
>>> fetcher.fetch(url)
# 渲染成功后執(zhí)行額外的JS腳本(注意用function包起來(lái)?。?
>>> fetcher.fetch(url, js_script='function(){setTimeout("window.scrollTo(0,100000)}", 1000)')

代碼 https://github.com/2shou/PhantomjsFetcher

相關(guān)文章

  • Python Thread虛假喚醒概念與防范詳解

    Python Thread虛假喚醒概念與防范詳解

    這篇文章主要介紹了Python Thread虛假喚醒概念與防范,虛假喚醒是一種現(xiàn)象,它只會(huì)出現(xiàn)在多線程環(huán)境中,指的是在多線程環(huán)境下,多個(gè)線程等待在同一個(gè)條件上,等到條件滿足時(shí),所有等待的線程都被喚醒,但由于多個(gè)線程執(zhí)行的順序不同
    2023-02-02
  • python中的多線程實(shí)例教程

    python中的多線程實(shí)例教程

    這篇文章主要介紹了python中的多線程用法,包括線程的創(chuàng)建、同步等核心問(wèn)題,具有很好的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-08-08
  • Python的argparse庫(kù)使用詳解

    Python的argparse庫(kù)使用詳解

    argparse是python標(biāo)準(zhǔn)庫(kù)里面用來(lái)處理命令行參數(shù)的庫(kù),這篇文章主要介紹了Python的argparse庫(kù)使用詳解,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • Python實(shí)現(xiàn)分段線性插值

    Python實(shí)現(xiàn)分段線性插值

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)分段線性插值,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • 一文帶你學(xué)會(huì)如何利用Python實(shí)現(xiàn)一個(gè)三維繪圖系統(tǒng)

    一文帶你學(xué)會(huì)如何利用Python實(shí)現(xiàn)一個(gè)三維繪圖系統(tǒng)

    tkinter是Python標(biāo)準(zhǔn)庫(kù)中自帶的GUI工具,使用十分方便,所以本文旨在帶大家學(xué)會(huì)如何將matplotlib嵌入到tkinter中并繪制三維繪圖系統(tǒng),感興趣的可以了解下
    2023-09-09
  • python 多進(jìn)程隊(duì)列數(shù)據(jù)處理詳解

    python 多進(jìn)程隊(duì)列數(shù)據(jù)處理詳解

    今天小編就為大家分享一篇python 多進(jìn)程隊(duì)列數(shù)據(jù)處理詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • python實(shí)現(xiàn)按日期歸檔文件

    python實(shí)現(xiàn)按日期歸檔文件

    這篇文章主要介紹了python實(shí)現(xiàn)如何按日期歸檔文件,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-01-01
  • 深入理解Django中內(nèi)置的用戶認(rèn)證

    深入理解Django中內(nèi)置的用戶認(rèn)證

    Django自帶一個(gè)用戶認(rèn)證系統(tǒng),這個(gè)系統(tǒng)處理用戶帳戶、組、權(quán)限和基于cookie的會(huì)話,下面這篇文章就來(lái)給大家介紹了關(guān)于Django中內(nèi)置的用戶認(rèn)證的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。
    2017-10-10
  • 深入分析python數(shù)據(jù)挖掘 Json結(jié)構(gòu)分析

    深入分析python數(shù)據(jù)挖掘 Json結(jié)構(gòu)分析

    這篇文章通過(guò)實(shí)例給大家分析總結(jié)了python數(shù)據(jù)挖掘以及Json結(jié)構(gòu)分析的相關(guān)知識(shí)點(diǎn),對(duì)此有興趣的朋友參考下。
    2018-04-04
  • 利用Python進(jìn)行時(shí)間序列數(shù)據(jù)分析與可視化的代碼示例

    利用Python進(jìn)行時(shí)間序列數(shù)據(jù)分析與可視化的代碼示例

    隨著時(shí)間序列數(shù)據(jù)在金融、氣象、生態(tài)等領(lǐng)域的廣泛應(yīng)用,利用Python進(jìn)行時(shí)間序列數(shù)據(jù)分析和可視化已成為重要的技能之一,本文將介紹如何使用Python進(jìn)行時(shí)間序列數(shù)據(jù)分析和可視化,并給出相應(yīng)的代碼示例,需要的朋友可以參考下
    2023-11-11

最新評(píng)論