Phantomjs抓取渲染JS后的網(wǎng)頁(Python代碼)
最近需要爬取某網(wǎng)站,無奈頁面都是JS渲染后生成的,普通的爬蟲框架搞不定,于是想到用Phantomjs搭一個代理。
Python調(diào)用Phantomjs貌似沒有現(xiàn)成的第三方庫(如果有,請告知小編),漫步了一圈,發(fā)現(xiàn)只有pyspider提供了現(xiàn)成的方案。
簡單試用了一下,感覺pyspider更像一個為新手打造的爬蟲工具,好比一個老媽子,有時無微不至,有時喋喋不休。 輕巧的小工具應(yīng)該更受人喜愛,我也懷著一點(diǎn)私心,可以帶著我最愛的BeautifulSoup一塊兒用,而不用再學(xué)PyQuery(pyspider用來解析HTML),更不用忍受瀏覽器寫Python的糟糕體驗(yàn)(偷笑)。
所以花了一個下午的時間,把pyspider當(dāng)中實(shí)現(xiàn)Phantomjs代理的部分拆了出來,獨(dú)立成一個小的爬蟲模塊,希望大家會喜歡(感謝binux?。?。
準(zhǔn)備工作
你當(dāng)然要有Phantomjs,廢話?。↙inux下最好用supervisord守護(hù),必須保持抓取的時候Phantomjs一直處于開啟狀態(tài))
用項(xiàng)目路徑下的phantomjs_fetcher.js啟動:phantomjs phantomjs_fetcher.js [port]
安裝tornado依賴(使用了tornado的httpclient模塊)
調(diào)用是超級簡單的
from tornado_fetcher import Fetcher
# 創(chuàng)建一個爬蟲
>>> 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ì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-08-08
PyTorch學(xué)習(xí)筆記之回歸實(shí)戰(zhàn)
這篇文章主要介紹了PyTorch學(xué)習(xí)筆記之回歸實(shí)戰(zhàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-05

