導航:首頁 > 編程語言 > phpphantomjs爬蟲

phpphantomjs爬蟲

發布時間:2022-12-15 16:20:48

1. 如何用php抓取js生成的頁面

簡單的說,做不到。
如果要抓取JS生成的頁面,可以考慮用PhantomJS。
其原理大概就是在你的伺服器上開了一個webkit內核的瀏覽器,然後在瀏覽器裡面打開頁面,在頁面load之後,你可以通過API獲取頁面上的DOM,同時也可以進行點擊之類的操作。

如何使用,不是這裡面能說清楚的。還是自己差一些資料吧。

2. 使用phantomjs爬取頁面內容時,內存佔用過多如何解決

怎說,我當時寫爬蟲的時候,也是開了多台gecodriver的進程,但是我用python監控了cpu的資源管理,佔用率太高了我就kill掉一部分的進程,如果是進程本身就死掉當然會kill並且有重啟機制。當然最後穩定下來確定了每台機器開幾個進程利用率很高。

3. Python+Selenium+PhantomJs爬蟲 怎麼抓取彈出新標簽頁的內容

在工程中新建一個Python Package(包),右鍵點擊src, New>PydevPackage,選擇源文件路徑及輸入包名: 在_init_.py,輸入print (「Hello World」),按F9即可看到輸出結果,說明開發環境安裝成功!

4. 安裝phantomjs時出現的一個問題

phantomjs不需要像python模塊那樣安裝,直接進入官網下載頁面(Python爬蟲利器四之PhantomJS的用法)

5. 有人用 Phantomjs casper 做爬蟲嗎發現它太慢,如何提高性能

phantomjs實際上就是一個瀏覽器,只是不顯示界面,可以執行頁面的js腳本等。
jsdom主要是方便解析html文本,相當於對字元串進行分析。

phantomjs對資源的要求和消耗都比較大,如果需要的內容從網頁源代碼中可以解析出來,推薦用jsdom,如果頁面復雜,推薦用phantomjs

6. 如何用python+selenium+phantomjs獲得一個網頁的動態生成的html代碼

一般我們使用python的第三方庫requests及框架scrapy來爬取網上的資源,但是設計javascript渲染的頁面卻不能抓取,此時,我們使用web自動化測試化工具Selenium+無界面瀏覽器PhantomJS來抓取javascript渲染的頁面,下面實現一個簡單的爬取

環境搭建

准備工具:python3.5,selenium,phantomjs

我的電腦裡面已經裝好了python3.5

安裝Selenium

1pip3 install selenium

安裝Phantomjs

按照系統環境下載phantomjs,下載完成之後,將phantomjs.exe解壓到python的script文件夾

使用selenium+phantomjs實現簡單爬蟲

123456789fromselenium import webdriverdriver = webdriver.PhantomJS()driver.get('http.com') #載入網頁data = driver.page_source #獲取網頁文本driver.save_screenshot('1.png') #截圖保存print(data)driver.quit()

selenium+phantomjs的一些使用方法

設置請求頭里的user-Agent

123456789101112fromselenium import webdriverfromselenium.webdriver.common.desired_capabilities import DesiredCapabilitiesdcap = dict(DesiredCapabilities.PHANTOMJS) #設置useragentdcap['phantomjs.page.settings.userAgent'] = ('Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0 ') #根據需要設置具體的瀏覽器信息driver = webdriver.PhantomJS(desired_capabilities=dcap) #封裝瀏覽器信息driver.get('h.com') #載入網頁data = driver.page_source #獲取網頁文本driver.save_screenshot('1.png') #截圖保存print(data)driver.quit()

請求超時設置

webdriver類中有三個和時間相關的方法:

1.pageLoadTimeout 設置頁面完全載入的超時時間,完全載入即完全渲染完成,同步和非同步腳本都執行完

2.setScriptTimeout 設置非同步腳本的超時時間

3.implicitlyWait 識別對象的智能等待時間

1234567fromselenium import webdriverdriver = webdriver.PhantomJS()driver.set_page_load_timeout(5) #設置超時時間driver.get('htt.com')print(driver.title)driver.quit()

設置瀏覽器窗口大小

調用啟動的瀏覽器不是全屏的,有時候會影響我們的某些操作,所以我們可以設置全屏

12driver.maximize_window() #設置全屏driver.set_window_size('480','800') #設置瀏覽器寬480,高800

元素定位

import webdriverdriver = webdriver.PhantomJS()driver.set_page_load_timeout(5)driver.get('i.com')try:driver.get('.com')driver.find_element_by_id('kw') # 通過ID定位driver.find_element_by_class_name('s_ipt') # 通過class屬性定位driver.find_element_by_name('wd') # 通過標簽name屬性定位driver.find_element_by_tag_name('input') # 通過標簽屬性定位driver.find_element_by_css_selector('#kw') # 通過css方式定位driver.find_element_by_xpath("//input[@id='kw']") # 通過xpath方式定位driver.find_element_by_link_text("貼吧") # 通過xpath方式定位print(driver.find_element_by_id('kw').tag_name ) # 獲取標簽的類型except Exceptionase:print(e)driver.quit()

操作瀏覽器前進或後退

import webdriverdriver = webdriver.PhantomJS()try:driver.get('httai.com') #訪問網路首頁driver.save_screenshot('1.png')driver.get('ht.sina.com.cn') #訪問新浪首頁driver.save_screenshot('2.png')driver.back() #回退到網路首頁driver.save_screenshot('3.png')driver.forward() #前進到新浪首頁driver.save_screenshot('4.png')except Exceptionase:print(e)driver.quit()

好文要頂關注我收藏該文

7. 如何使用nodejs做爬蟲程序

1、如果是定向爬取幾個頁面,做一些簡單的頁面解析,爬取效率不是核心要求,那麼用什麼語言差異不大。
當然要是頁面結構復雜,正則表達式寫得巨復雜,尤其是用過那些支持xpath的類庫/爬蟲庫後,就會發現此種方式雖然入門門檻低,但擴展性、可維護性等都奇差。因此此種情況下還是推薦採用一些現成的爬蟲庫,諸如xpath、多線程支持還是必須考慮的因素。

2、如果是定向爬取,且主要目標是解析js動態生成的內容
此時候,頁面內容是有js/ajax動態生成的,用普通的請求頁面->解析的方法就不管用了,需要藉助一個類似firefox、chrome瀏覽器的js引擎來對頁面的js代碼做動態解析。
此種情況下,推薦考慮casperJS+phantomjs或slimerJS+phantomjs ,當然諸如selenium之類的也可以考慮。

3、如果爬蟲是涉及大規模網站爬取,效率、擴展性、可維護性等是必須考慮的因素時候
大規模爬蟲爬取涉及諸多問題:多線程並發、I/O機制、分布式爬取、消息通訊、判重機制、任務調度等等,此時候語言和所用框架的選取就具有極大意義了。
PHP對多線程、非同步支持較差,不建議採用。
NodeJS:對一些垂直網站爬取倒可以,但由於分布式爬取、消息通訊等支持較弱,根據自己情況判斷。
Python:強烈建議,對以上問題都有較好支持。尤其是Scrapy框架值得作為第一選擇。優點諸多:支持xpath;基於twisted,性能不錯;有較好的調試工具;
此種情況下,如果還需要做js動態內容的解析,casperjs就不適合了,只有基於諸如chrome V8引擎之類自己做js引擎。
至於C、C++雖然性能不錯,但不推薦,尤其是考慮到成本等諸多因素;對於大部分公司還是建議基於一些開源的框架來做,不要自己發明輪子,做一個簡單的爬蟲容易,但要做一個完備的爬蟲挺難的。

像我搭建的微信公眾號內容聚合的網站 就是基於Scrapy做的,當然還涉及消息隊列等。可以參考下圖:

具體內容可以參考 一個任務調度分發服務的架構

8. 爬蟲 Selenium Chrome報錯 PhantomJS正常

有可能是chrome瀏覽器自動升級了,和chromedriver的版本對應不上了
chromedriver和chrome瀏覽器是有版本對應關系的(直接雙擊chromedriver.exe可以看到版本號),根據下表去搜索對應版本的chromedriver放在python目錄內即可:
chromedriver版本 支持的Chrome版本
v2.33 v60-62
v2.32 v59-61
v2.31 v58-60
v2.30 v58-60
v2.29 v56-58
v2.28 v55-57
v2.27 v54-56
v2.26 v53-55
v2.25 v53-55
v2.24 v52-54
v2.23 v51-53
v2.22 v49-52
v2.21 v46-50
v2.20 v43-48
v2.19 v43-47
v2.18 v43-46
v2.17 v42-43
v2.13 v42-45
v2.15 v40-43
v2.14 v39-42
v2.13 v38-41
v2.12 v36-40
v2.11 v36-40
v2.10 v33-36
v2.9 v31-34
v2.8 v30-33
v2.7 v30-33
v2.6 v29-32
v2.5 v29-32
v2.4 v29-32

9. 精通Python網路爬蟲之網路爬蟲學習路線

欲精通Python網路爬蟲,必先了解網路爬蟲學習路線,本篇經驗主要解決這個問題。部分內容參考自書籍《精通Python網路爬蟲》。

作者:韋瑋

轉載請註明出處

隨著大數據時代的到來,人們對數據資源的需求越來越多,而爬蟲是一種很好的自動採集數據的手段。

那麼,如何才能精通Python網路爬蟲呢?學習Python網路爬蟲的路線應該如何進行呢?在此為大傢具體進行介紹。

1、選擇一款合適的編程語言

事實上,Python、PHP、JAVA等常見的語言都可以用於編寫網路爬蟲,你首先需要選擇一款合適的編程語言,這些編程語言各有優勢,可以根據習慣進行選擇。在此筆者推薦使用Python進行爬蟲項目的編寫,其優點是:簡潔、掌握難度低。

2、掌握Python的一些基礎爬蟲模塊

當然,在進行這一步之前,你應當先掌握Python的一些簡單語法基礎,然後才可以使用Python語言進行爬蟲項目的開發。

在掌握了Python的語法基礎之後,你需要重點掌握一個Python的關於爬蟲開發的基礎模塊。這些模塊有很多可以供你選擇,比如urllib、requests等等,只需要精通一個基礎模塊即可,不必要都精通,因為都是大同小異的,在此推薦的是掌握urllib,當然你可以根據你的習慣進行選擇。

3、深入掌握一款合適的表達式

學會了如何爬取網頁內容之後,你還需要學會進行信息的提取。事實上,信息的提取你可以通過表達式進行實現,同樣,有很多表達式可以供你選擇使用,常見的有正則表達式、XPath表達式、BeautifulSoup等,這些表達式你沒有必要都精通,同樣,精通1-2個,其他的掌握即可,在此建議精通掌握正則表達式以及XPath表達式,其他的了解掌握即可。正則表達式可以處理的數據的范圍比較大,簡言之,就是能力比較強,XPath只能處理XML格式的數據,有些形式的數據不能處理,但XPath處理數據會比較快。

4、深入掌握抓包分析技術

事實上,很多網站都會做一些反爬措施,即不想讓你爬到他的數據。最常見的反爬手段就是對數據進行隱藏處理,這個時候,你就無法直接爬取相關的數據了。作為爬蟲方,如果需要在這種情況下獲取數據,那麼你需要對相應的數據進行抓包分析,然後再根據分析結果進行處理。一般推薦掌握的抓包分析工具是Fiddler,當然你也可以用其他的抓包分析工具,沒有特別的要求。

5、精通一款爬蟲框架

事實上,當你學習到這一步的時候,你已經入門了。

這個時候,你可能需要深入掌握一款爬蟲框架,因為採用框架開發爬蟲項目,效率會更加高,並且項目也會更加完善。

同樣,你可以有很多爬蟲框架進行選擇,比如Scrapy、pySpider等等,一樣的,你沒必要每一種框架都精通,只需要精通一種框架即可,其他框架都是大同小異的,當你深入精通一款框架的時候,其他的框架了解一下事實上你便能輕松使用,在此推薦掌握Scrapy框架,當然你可以根據習慣進行選擇。

6、掌握常見的反爬策略與反爬處理策略

反爬,是相對於網站方來說的,對方不想給你爬他站點的數據,所以進行了一些限制,這就是反爬。

反爬處理,是相對於爬蟲方來說的,在對方進行了反爬策略之後,你還想爬相應的數據,就需要有相應的攻克手段,這個時候,就需要進行反爬處理。

事實上,反爬以及反爬處理都有一些基本的套路,萬變不離其宗,這些後面作者會具體提到,感興趣的可以關注。

常見的反爬策略主要有:

IP限制

UA限制

Cookie限制

資源隨機化存儲

動態載入技術

……

對應的反爬處理手段主要有:

IP代理池技術

用戶代理池技術

Cookie保存與處理

自動觸發技術

抓包分析技術+自動觸發技術

……

這些大家在此先有一個基本的思路印象即可,後面都會具體通過實戰案例去介紹。

7、掌握PhantomJS、Selenium等工具的使用

有一些站點,通過常規的爬蟲很難去進行爬取,這個時候,你需要藉助一些工具模塊進行,比如PhantomJS、Selenium等,所以,你還需要掌握PhantomJS、Selenium等工具的常規使用方法。

8、掌握分布式爬蟲技術與數據去重技術

如果你已經學習或者研究到到了這里,那麼恭喜你,相信現在你爬任何網站都已經不是問題了,反爬對你來說也只是一道形同虛設的牆而已了。

但是,如果要爬取的資源非常非常多,靠一個單機爬蟲去跑,仍然無法達到你的目的,因為太慢了。

所以,這個時候,你還應當掌握一種技術,就是分布式爬蟲技術,分布式爬蟲的架構手段有很多,你可以依據真實的伺服器集群進行,也可以依據虛擬化的多台伺服器進行,你可以採用urllib+redis分布式架構手段,也可以採用Scrapy+redis架構手段,都沒關系,關鍵是,你可以將爬蟲任務部署到多台伺服器中就OK。

至於數據去重技術,簡單來說,目的就是要去除重復數據,如果數據量小,直接採用資料庫的數據約束進行實現,如果數據量很大,建議採用布隆過濾器實現數據去重即可,布隆過濾器的實現在Python中也是不難的。

以上是如果你想精通Python網路爬蟲的學習研究路線,按照這些步驟學習下去,可以讓你的爬蟲技術得到非常大的提升。

至於有些朋友問到,使用Windows系統還是Linux系統,其實,沒關系的,一般建議學習的時候使用Windows系統進行就行,比較考慮到大部分朋友對該系統比較數據,但是在實際運行爬蟲任務的時候,把爬蟲部署到Linux系統中運行,這樣效率比較高。由於Python的可移植性非常好,所以你在不同的平台中運行一個爬蟲,代碼基本上不用進行什麼修改,只需要學會部署到Linux中即可。所以,這也是為什麼說使用Windows系統還是Linux系統進行學習都沒多大影響的原因之一。

本篇文章主要是為那些想學習Python網路爬蟲,但是又不知道從何學起,怎麼學下去的朋友而寫的。希望通過本篇文章,可以讓你對Python網路爬蟲的研究路線有一個清晰的了解,這樣,本篇文章的目的就達到了,加油!

本文章由作者韋瑋原創,轉載請註明出處。

閱讀全文

與phpphantomjs爬蟲相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:758
蘋果郵件無法連接伺服器地址 瀏覽:963
phpffmpeg轉碼 瀏覽:672
長沙好玩的解壓項目 瀏覽:145
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:486
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:383
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:350
風翼app為什麼進不去了 瀏覽:779
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:151
伊克塞爾文檔怎麼進行加密 瀏覽:893
app轉賬是什麼 瀏覽:163