Phantomjs抓取渲染JS后的網(wǎng)頁(Python代碼)
最近需要爬取某網(wǎng)站,無奈頁面都是JS渲染后生成的,普通的爬蟲框架搞不定,于是想到用Phantomjs搭一個(gè)代理。
Python調(diào)用Phantomjs貌似沒有現(xiàn)成的第三方庫(如果有,請(qǐng)告知小編),漫步了一圈,發(fā)現(xiàn)只有pyspider提供了現(xiàn)成的方案。
簡單試用了一下,感覺pyspider更像一個(gè)為新手打造的爬蟲工具,好比一個(gè)老媽子,有時(shí)無微不至,有時(shí)喋喋不休。 輕巧的小工具應(yīng)該更受人喜愛,我也懷著一點(diǎn)私心,可以帶著我最愛的BeautifulSoup一塊兒用,而不用再學(xué)PyQuery(pyspider用來解析HTML),更不用忍受瀏覽器寫Python的糟糕體驗(yàn)(偷笑)。
所以花了一個(gè)下午的時(shí)間,把pyspider當(dāng)中實(shí)現(xiàn)Phantomjs代理的部分拆了出來,獨(dú)立成一個(gè)小的爬蟲模塊,希望大家會(huì)喜歡(感謝binux?。?。
準(zhǔn)備工作
你當(dāng)然要有Phantomjs,廢話!(Linux下最好用supervisord守護(hù),必須保持抓取的時(shí)候Phantomjs一直處于開啟狀態(tài))
用項(xiàng)目路徑下的phantomjs_fetcher.js啟動(dòng):phantomjs phantomjs_fetcher.js [port]
安裝tornado依賴(使用了tornado的httpclient模塊)
調(diào)用是超級(jí)簡單的
from tornado_fetcher import Fetcher
# 創(chuàng)建一個(gè)爬蟲
>>> fetcher=Fetcher(
user_agent='phantomjs', # 模擬瀏覽器的User-Agent
phantomjs_proxy='http://localhost:12306', # phantomjs的地址
poolsize=10, # 最大的httpclient數(shù)量
async=False # 同步還是異步
)
# 開始連接Phantomjs的代碼,可以渲染JS!
>>> fetcher.fetch(url)
# 渲染成功后執(zhí)行額外的JS腳本(注意用function包起來!)
>>> fetcher.fetch(url, js_script='function(){setTimeout("window.scrollTo(0,100000)}", 1000)')
相關(guān)文章
python 解析XML python模塊xml.dom解析xml實(shí)例代碼
這篇文章主要介紹了分享下python中使用模塊xml.dom解析xml文件的實(shí)例代碼,學(xué)習(xí)下python解析xml文件的方法,有需要的朋友參考下2014-02-02
Python讀取圖片屬性信息的實(shí)現(xiàn)方法
這篇文章介紹了利用Python讀取圖片屬性信息的方法,讀取的內(nèi)容包括GPS 信息、圖片分辨率、圖片像素、設(shè)備商、拍攝設(shè)備等,有需要的朋友們可以參考借鑒。2016-09-09
opencv+python實(shí)現(xiàn)圖像矯正
這篇文章主要為大家詳細(xì)介紹了opencv+python實(shí)現(xiàn)圖像矯正,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08
PyTorch學(xué)習(xí)筆記之回歸實(shí)戰(zhàn)
這篇文章主要介紹了PyTorch學(xué)習(xí)筆記之回歸實(shí)戰(zhàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-05-05

