摘要:傳統(tǒng)的無法執(zhí)行頁面中的瀏覽器腳本,并且在抓取一些對(duì)爬蟲有限制的網(wǎng)頁時(shí),往往要設(shè)定詳細(xì)的來突破限制,編寫起來較為復(fù)雜。直接使用瀏覽器運(yùn)行,像真正的用戶在操作。支持以下方式進(jìn)行選擇元素各種庫對(duì)情況的檢測(cè)方法
傳統(tǒng)的 cURL 無法執(zhí)行頁面中的瀏覽器腳本,并且在抓取一些對(duì)爬蟲有限制的網(wǎng)頁時(shí),往往要設(shè)定詳細(xì)的 http header 來突破限制,編寫起來較為復(fù)雜。
Selenium簡(jiǎn)介:Selenium 是一個(gè)用于Web應(yīng)用程序測(cè)試的工具(用處也不僅僅是測(cè)試)。
Selenium 直接使用瀏覽器運(yùn)行,像真正的用戶在操作。支持較多的瀏覽器。
Selenium IDE:Firefox插件,有錄制腳本的功能。支持自動(dòng)錄制動(dòng)作和自動(dòng)生成其他語言的自動(dòng)化腳本。
Selenium Remote Control (RC) :支持多種平臺(tái)(Windows,Linux)和多瀏覽器(IE,F(xiàn)irefox,Opera,Safari,Chrome),可以用多種語言(Java,Ruby,Python,Perl,PHP,C#)編寫用例。
Selenium Grid :允許Selenium-RC 針對(duì)規(guī)模龐大的測(cè)試案例集或者需要在不同環(huán)境中運(yùn)行的測(cè)試案例集進(jìn)行擴(kuò)展。
1.前往項(xiàng)目主頁: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]
如需長(zhǎng)時(shí)間運(yùn)行請(qǐng)酌情設(shè)置各 "[ ]" 中的超時(shí)時(shí)間
3.PHP代碼
execute(array("script" => "return (document.readyState != "complete")", "args" => array()))); } //該函數(shù)會(huì)把腳本掛起直到等待到Ajax結(jié)束 require_once "webdriver/PHPWebDriver/__init__.php"; // 引入 selenium 的PHP封裝函數(shù)庫 // 下載地址: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"); //設(shè)置超時(shí)時(shí)間 $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"); //輸入驗(yàn)證碼用,如果需要的話 sleep(5); //請(qǐng)?jiān)O(shè)置好帳號(hào)密碼 $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"))); //模擬點(diǎn)擊登入按鈕 $elements = $session->element("css selector", ".c-btn-oran-big")->click(); //打開 m.taobao.com,此時(shí)已獲取到cookie $session->open("http://m.taobao.com/"); //等待ajax加載完畢 waitForAjax(); $elements = $session->element("css selector", "body")->text(); //獲得了登入后ajax執(zhí)行完畢時(shí)的頁面內(nèi)容 ?>
之后便可以按需對(duì) $session 實(shí)例進(jìn)行 element 方法的各種操作。
支持以下方式進(jìn)行選擇元素
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"
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/20604.html
摘要:傳統(tǒng)的無法執(zhí)行頁面中的瀏覽器腳本,并且在抓取一些對(duì)爬蟲有限制的網(wǎng)頁時(shí),往往要設(shè)定詳細(xì)的來突破限制,編寫起來較為復(fù)雜。直接使用瀏覽器運(yùn)行,像真正的用戶在操作。支持以下方式進(jìn)行選擇元素各種庫對(duì)情況的檢測(cè)方法 傳統(tǒng)的 cURL 無法執(zhí)行頁面中的瀏覽器腳本,并且在抓取一些對(duì)爬蟲有限制的網(wǎng)頁時(shí),往往要設(shè)定詳細(xì)的 http header 來突破限制,編寫起來較為復(fù)雜。 Selenium簡(jiǎn)介: ...
摘要:不過動(dòng)態(tài)渲染的頁面不止這一種。再有淘寶這種頁面,它即使是獲取的數(shù)據(jù),但是其接口含有很多加密參數(shù),我們難以直接找出其規(guī)律,也很難直接分析來抓取。我們用一個(gè)實(shí)例來感受一下在這里們依然是先打開知乎頁面,然后獲取提問按鈕這個(gè)節(jié)點(diǎn),再將其 上一篇文章:Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)---36、分析Ajax爬取今日頭條街拍美圖下一篇文章:Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)---38、動(dòng)態(tài)渲染頁面抓取:Spla...
摘要:目標(biāo)通過模擬瀏覽器抓取淘寶商品美食信息,并存儲(chǔ)到數(shù)據(jù)庫中。流程框架淘寶頁面比較復(fù)雜,含有各種請(qǐng)求參數(shù)和加密參數(shù),如果直接請(qǐng)求或者分析將會(huì)非常繁瑣。 目標(biāo) 通過Selenium模擬瀏覽器抓取淘寶商品美食信息,并存儲(chǔ)到MongoDB數(shù)據(jù)庫中。 流程框架 淘寶頁面比較復(fù)雜,含有各種請(qǐng)求參數(shù)和加密參數(shù),如果直接請(qǐng)求或者分析Ajax將會(huì)非常繁瑣。Selenium是一個(gè)自動(dòng)化測(cè)試工具,可以驅(qū)動(dòng)瀏覽...
摘要:包括爬蟲編寫爬蟲避禁動(dòng)態(tài)網(wǎng)頁數(shù)據(jù)抓取部署分布式爬蟲系統(tǒng)監(jiān)測(cè)共六個(gè)內(nèi)容,結(jié)合實(shí)際定向抓取騰訊新聞數(shù)據(jù),通過測(cè)試檢驗(yàn)系統(tǒng)性能。 1 項(xiàng)目介紹 本項(xiàng)目的主要內(nèi)容是分布式網(wǎng)絡(luò)新聞抓取系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)。主要有以下幾個(gè)部分來介紹: (1)深入分析網(wǎng)絡(luò)新聞爬蟲的特點(diǎn),設(shè)計(jì)了分布式網(wǎng)絡(luò)新聞抓取系統(tǒng)爬取策略、抓取字段、動(dòng)態(tài)網(wǎng)頁抓取方法、分布式結(jié)構(gòu)、系統(tǒng)監(jiān)測(cè)和數(shù)據(jù)存儲(chǔ)六個(gè)關(guān)鍵功能。 (2)結(jié)合程序代碼分解說...
摘要:學(xué)習(xí)網(wǎng)絡(luò)爬蟲主要分個(gè)大的版塊抓取,分析,存儲(chǔ)另外,比較常用的爬蟲框架,這里最后也詳細(xì)介紹一下。網(wǎng)絡(luò)爬蟲要做的,簡(jiǎn)單來說,就是實(shí)現(xiàn)瀏覽器的功能。 Python學(xué)習(xí)網(wǎng)絡(luò)爬蟲主要分3個(gè)大的版塊:抓取,分析,存儲(chǔ) 另外,比較常用的爬蟲框架Scrapy,這里最后也詳細(xì)介紹一下。 首先列舉一下本人總結(jié)的相關(guān)文章,這些覆蓋了入門網(wǎng)絡(luò)爬蟲需要的基本概念和技巧:寧哥的小站-網(wǎng)絡(luò)爬蟲,當(dāng)我們?cè)跒g覽器中輸入...
閱讀 1421·2021-09-02 09:53
閱讀 2680·2021-07-29 13:50
閱讀 1727·2019-08-30 11:07
閱讀 1586·2019-08-30 11:00
閱讀 1464·2019-08-29 14:00
閱讀 1858·2019-08-29 12:52
閱讀 2578·2019-08-29 11:11
閱讀 3432·2019-08-26 12:23