摘要:傳統的無法執行頁面中的瀏覽器腳本,并且在抓取一些對爬蟲有限制的網頁時,往往要設定詳細的來突破限制,編寫起來較為復雜。直接使用瀏覽器運行,像真正的用戶在操作。支持以下方式進行選擇元素各種庫對情況的檢測方法
傳統的 cURL 無法執行頁面中的瀏覽器腳本,并且在抓取一些對爬蟲有限制的網頁時,往往要設定詳細的 http header 來突破限制,編寫起來較為復雜。
Selenium簡介:Selenium 是一個用于Web應用程序測試的工具(用處也不僅僅是測試)。
Selenium 直接使用瀏覽器運行,像真正的用戶在操作。支持較多的瀏覽器。
Selenium IDE:Firefox插件,有錄制腳本的功能。支持自動錄制動作和自動生成其他語言的自動化腳本。
Selenium Remote Control (RC) :支持多種平臺(Windows,Linux)和多瀏覽器(IE,Firefox,Opera,Safari,Chrome),可以用多種語言(Java,Ruby,Python,Perl,PHP,C#)編寫用例。
Selenium Grid :允許Selenium-RC 針對規模龐大的測試案例集或者需要在不同環境中運行的測試案例集進行擴展。
1.前往項目主頁:SeleniumHQ 下載
Selenium Server (formerly the Selenium RC Server)
Third Party Browser Drivers NOT DEVELOPED by seleniumhq
(選擇chrome的driver)
Third Party Language Bindings NOT DEVELOPED by seleniumhq
(選擇PHP by Adam Goucher (SeHQ recommended php client))
2.打開 selenium
java -jar path_to_selenium.jar [-timeout 0] [-Dwebdriver.server.session.timeout=0] -Dwebdriver.chrome.driver="path_to_chrome_driver" -browser [-timeout=0] [-browserTimeout=0] browserName=chrome,[timeout=0]
如需長時間運行請酌情設置各 "[ ]" 中的超時時間
3.PHP代碼
execute(array("script" => "return (document.readyState != "complete")", "args" => array()))); } //該函數會把腳本掛起直到等待到Ajax結束 require_once "webdriver/PHPWebDriver/__init__.php"; // 引入 selenium 的PHP封裝函數庫 // 下載地址:https://github.com/Element-34/php-webdriver // 文檔中有各種操作瀏覽器方法,如獲取所有cookie等 $wd_host = "http://127.0.0.1:4444/wd/hub"; $web_driver = new PHPWebDriver_WebDriver($wd_host); $session = $web_driver->session("chrome"); //設置超時時間 $session->implicitlyWait(5); $session->setScriptTimeout(5); $session->setPageLoadTimeout(15); //打開連接 $session->open("http://login.m.taobao.com/login.htm?tpl_redirect_url=http://m.taobao.com"); //輸入驗證碼用,如果需要的話 sleep(5); //請設置好帳號密碼 $session->element("css selector", "input[name=TPL_username]")->value(array("value" => str_split("your_username"))); $session->element("css selector", "input[name=TPL_password]")->value(array("value" => str_split("your_password"))); //模擬點擊登入按鈕 $elements = $session->element("css selector", ".c-btn-oran-big")->click(); //打開 m.taobao.com,此時已獲取到cookie $session->open("http://m.taobao.com/"); //等待ajax加載完畢 waitForAjax(); $elements = $session->element("css selector", "body")->text(); //獲得了登入后ajax執行完畢時的頁面內容 ?>
之后便可以按需對 $session 實例進行 element 方法的各種操作。
支持以下方式進行選擇元素
id
xpath
link text
partial link text
name
tag name
class name
css selector
jQuery: "jQuery.active"
Prototype: "Ajax.activeRequestCount"
Dojo: "dojo.io.XMLHTTPTransport.inFlight.length"
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/20604.html
摘要:傳統的無法執行頁面中的瀏覽器腳本,并且在抓取一些對爬蟲有限制的網頁時,往往要設定詳細的來突破限制,編寫起來較為復雜。直接使用瀏覽器運行,像真正的用戶在操作。支持以下方式進行選擇元素各種庫對情況的檢測方法 傳統的 cURL 無法執行頁面中的瀏覽器腳本,并且在抓取一些對爬蟲有限制的網頁時,往往要設定詳細的 http header 來突破限制,編寫起來較為復雜。 Selenium簡介: ...
摘要:不過動態渲染的頁面不止這一種。再有淘寶這種頁面,它即使是獲取的數據,但是其接口含有很多加密參數,我們難以直接找出其規律,也很難直接分析來抓取。我們用一個實例來感受一下在這里們依然是先打開知乎頁面,然后獲取提問按鈕這個節點,再將其 上一篇文章:Python3網絡爬蟲實戰---36、分析Ajax爬取今日頭條街拍美圖下一篇文章:Python3網絡爬蟲實戰---38、動態渲染頁面抓取:Spla...
摘要:目標通過模擬瀏覽器抓取淘寶商品美食信息,并存儲到數據庫中。流程框架淘寶頁面比較復雜,含有各種請求參數和加密參數,如果直接請求或者分析將會非常繁瑣。 目標 通過Selenium模擬瀏覽器抓取淘寶商品美食信息,并存儲到MongoDB數據庫中。 流程框架 淘寶頁面比較復雜,含有各種請求參數和加密參數,如果直接請求或者分析Ajax將會非常繁瑣。Selenium是一個自動化測試工具,可以驅動瀏覽...
摘要:包括爬蟲編寫爬蟲避禁動態網頁數據抓取部署分布式爬蟲系統監測共六個內容,結合實際定向抓取騰訊新聞數據,通過測試檢驗系統性能。 1 項目介紹 本項目的主要內容是分布式網絡新聞抓取系統設計與實現。主要有以下幾個部分來介紹: (1)深入分析網絡新聞爬蟲的特點,設計了分布式網絡新聞抓取系統爬取策略、抓取字段、動態網頁抓取方法、分布式結構、系統監測和數據存儲六個關鍵功能。 (2)結合程序代碼分解說...
摘要:學習網絡爬蟲主要分個大的版塊抓取,分析,存儲另外,比較常用的爬蟲框架,這里最后也詳細介紹一下。網絡爬蟲要做的,簡單來說,就是實現瀏覽器的功能。 Python學習網絡爬蟲主要分3個大的版塊:抓取,分析,存儲 另外,比較常用的爬蟲框架Scrapy,這里最后也詳細介紹一下。 首先列舉一下本人總結的相關文章,這些覆蓋了入門網絡爬蟲需要的基本概念和技巧:寧哥的小站-網絡爬蟲,當我們在瀏覽器中輸入...
閱讀 1399·2021-09-02 09:53
閱讀 2667·2021-07-29 13:50
閱讀 1715·2019-08-30 11:07
閱讀 1571·2019-08-30 11:00
閱讀 1450·2019-08-29 14:00
閱讀 1844·2019-08-29 12:52
閱讀 2560·2019-08-29 11:11
閱讀 3415·2019-08-26 12:23