摘要:最近需要爬取某網(wǎng)站,無奈頁面都是渲染后生成的,普通的爬蟲框架搞不定,于是想到用搭一個代理。調(diào)用貌似沒有現(xiàn)成的第三方庫如果有,請告知小,漫步了一圈,發(fā)現(xiàn)只有提供了現(xiàn)成的方案。
最近需要爬取某網(wǎng)站,無奈頁面都是JS渲染后生成的,普通的爬蟲框架搞不定,于是想到用Phantomjs搭一個代理。
Python調(diào)用Phantomjs貌似沒有現(xiàn)成的第三方庫(如果有,請告知小2),漫步了一圈,發(fā)現(xiàn)只有pyspider提供了現(xiàn)成的方案。
簡單試用了一下,感覺pyspider更像一個為新手打造的爬蟲工具,好比一個老媽子,有時無微不至,有時喋喋不休。
輕巧的小工具應該更受人喜愛,我也懷著一點私心,可以帶著我最愛的BeautifulSoup一塊兒用,而不用再學PyQuery(pyspider用來解析HTML),更不用忍受瀏覽器寫Python的糟糕體驗(偷笑)。
所以花了一個下午的時間,把pyspider當中實現(xiàn)Phantomjs代理的部分拆了出來,獨立成一個小的爬蟲模塊,希望大家會喜歡(感謝binux!)。
準備工作你當然要有Phantomjs,廢話!(Linux下最好用supervisord守護,必須保持抓取的時候Phantomjs一直處于開啟狀態(tài))
用項目路徑下的phantomjs_fetcher.js啟動:phantomjs phantomjs_fetcher.js [port]
安裝tornado依賴(使用了tornado的httpclient模塊)
調(diào)用是超級簡單的pythonfrom 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.phantomjs_fetch(url) # 渲染成功后執(zhí)行額外的JS腳本(注意用function包起來?。?>>> fetcher.phantomjs_fetch(url, js_script="function(){setTimeout("window.scrollTo(0,100000)}", 1000)")
老規(guī)矩,代碼在小2的Github了,歡迎指正:PhantomjsFetcher
來自:建造者說
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/45350.html
摘要:,集搜客開源代碼下載源開源網(wǎng)絡爬蟲源,文檔修改歷史,增補文字說明,增加第五章源代碼下載源,并更換源的網(wǎng)址 showImg(https://segmentfault.com/img/bVvMn3); 1,引言 在Python網(wǎng)絡爬蟲內(nèi)容提取器一文我們詳細講解了核心部件:可插拔的內(nèi)容提取器類gsExtractor。本文記錄了確定gsExtractor的技術(shù)路線過程中所做的編程實驗。這是第二...
摘要:上一篇文章網(wǎng)絡爬蟲實戰(zhàn)請求庫安裝下一篇文章網(wǎng)絡爬蟲實戰(zhàn)解析庫的安裝的安裝在上一節(jié)我們了解了的配置方法,配置完成之后我們便可以用來驅(qū)動瀏覽器來做相應網(wǎng)頁的抓取。上一篇文章網(wǎng)絡爬蟲實戰(zhàn)請求庫安裝下一篇文章網(wǎng)絡爬蟲實戰(zhàn)解析庫的安裝 上一篇文章:Python3網(wǎng)絡爬蟲實戰(zhàn)---1、請求庫安裝:Requests、Selenium、ChromeDriver下一篇文章:Python3網(wǎng)絡爬蟲實戰(zhàn)--...
摘要:未授權(quán)的爬蟲抓取程序是危害原創(chuàng)內(nèi)容生態(tài)的一大元兇,因此要保護網(wǎng)站的內(nèi)容,首先就要考慮如何反爬蟲。反爬蟲的銀彈目前的反抓取機器人檢查手段,最可靠的還是驗證碼技術(shù)。機器人協(xié)議除此之外,在爬蟲抓取技術(shù)領域還有一個白道的手段,叫做協(xié)議。 本文首發(fā)于我的個人博客,同步發(fā)布于SegmentFault專欄,非商業(yè)轉(zhuǎn)載請注明出處,商業(yè)轉(zhuǎn)載請閱讀原文鏈接里的法律聲明。 web是一個開放的平臺,這也奠定了...
摘要:,引言注釋上一篇爬蟲實戰(zhàn)安居客房產(chǎn)經(jīng)紀人信息采集,訪問的網(wǎng)頁是靜態(tài)網(wǎng)頁,有朋友模仿那個實戰(zhàn)來采集動態(tài)加載豆瓣小組的網(wǎng)頁,結(jié)果不成功。 showImg(https://segmentfault.com/img/bVzdNZ); 1, 引言 注釋:上一篇《Python爬蟲實戰(zhàn)(3):安居客房產(chǎn)經(jīng)紀人信息采集》,訪問的網(wǎng)頁是靜態(tài)網(wǎng)頁,有朋友模仿那個實戰(zhàn)來采集動態(tài)加載豆瓣小組的網(wǎng)頁,結(jié)果不成功...
摘要:英文原文在上兩篇教程中,我們學習了怎么從中提取信息,也學習了怎么處理一些請求復雜的頁面。在使用之前,你需要安裝它安裝文檔。當你安裝了之后,在運行模式的時就會自動啟用了。使用當連上代理后,你就能通過在中添加的參數(shù),開啟使用抓取。 英文原文:http://docs.pyspider.org/en/latest/tutorial/Render-with-PhantomJS/ 在上兩篇教程中...
閱讀 3055·2021-11-22 09:34
閱讀 2520·2021-09-30 09:47
閱讀 1456·2021-09-03 10:32
閱讀 3726·2021-08-16 10:49
閱讀 1798·2019-08-30 15:55
閱讀 2475·2019-08-30 15:52
閱讀 3333·2019-08-30 15:44
閱讀 1365·2019-08-30 15:44