亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

什么是Selenium

01

模擬瀏覽器:Selenium

我們知道,網(wǎng)頁(yè)會(huì)使用JAVA加載數(shù)據(jù),對(duì)應(yīng)于這種模式,可以通過(guò)分析數(shù)據(jù)接口來(lái)進(jìn)行直接抓取,這種方式需要對(duì)網(wǎng)頁(yè)的內(nèi)容、格式和Java代碼有所研究才能順利完成。但有時(shí)還會(huì)碰到另外一些頁(yè)面,這些頁(yè)面同樣使用AJAX技術(shù),但是其頁(yè)面結(jié)構(gòu)比較復(fù)雜,很多網(wǎng)頁(yè)中的關(guān)鍵數(shù)據(jù)由AJAX獲得,而頁(yè)面元素本身也使用Java來(lái)添加或修改,甚至于人們感興趣的內(nèi)容在原始頁(yè)面中并不出現(xiàn),需要進(jìn)行一定的用戶交互(如不斷下拉滾動(dòng)條)才會(huì)顯示。對(duì)于這種情況,為了方便,就會(huì)考慮使用模擬瀏覽器的方法來(lái)進(jìn)行抓取,而不是通過(guò)“逆向工程”去分析AJAX接口,使用模擬瀏覽器的方法,特點(diǎn)是普適性強(qiáng),開(kāi)發(fā)耗時(shí)短,抓取耗時(shí)長(zhǎng)(模擬瀏覽器的性能問(wèn)題始終令人憂慮),使用分析AJAX的方法,特點(diǎn)則剛好與模擬瀏覽器相反,甚至在同一個(gè)網(wǎng)站、同一個(gè)類別中的不同網(wǎng)頁(yè)上,AJAX數(shù)據(jù)的具體訪問(wèn)信息都有差別,因此開(kāi)發(fā)過(guò)程投入的時(shí)間和精力成本是比較大的。如果碰到頁(yè)面結(jié)構(gòu)相對(duì)復(fù)雜或者AJAX數(shù)據(jù)分析比較困難(如數(shù)據(jù)經(jīng)過(guò)加密)的情況,就需要考慮使用瀏覽器模擬的方式了。

在Python/ target=_blank class=infotextkey>Python模擬瀏覽器進(jìn)行數(shù)據(jù)抓取方面,Selenium永遠(yuǎn)是繞不過(guò)去的一個(gè)坎。Selenium(意為化學(xué)元素“硒”)是瀏覽器自動(dòng)化工具,在設(shè)計(jì)之初是為了進(jìn)行瀏覽器的功能測(cè)試。Selenium的作用,直觀地說(shuō),就是使得操縱瀏覽器進(jìn)行一些類似普通用戶的操作成為可能,如訪問(wèn)某個(gè)地址、判斷網(wǎng)頁(yè)狀態(tài)、單擊網(wǎng)頁(yè)中的某個(gè)元素(按鈕)等。使用Selenium來(lái)操控瀏覽器進(jìn)行的數(shù)據(jù)抓取其實(shí)已經(jīng)不能算是一種“爬蟲(chóng)”程序,一般談到爬蟲(chóng),自然想到的是獨(dú)立于瀏覽器之外的程序,但無(wú)論如何,這種方法有助于解決一些比較復(fù)雜的網(wǎng)頁(yè)抓取任務(wù),由于直接使用了瀏覽器,麻煩的AJAX數(shù)據(jù)和Java動(dòng)態(tài)頁(yè)面一般都已經(jīng)渲染完成,利用一些函數(shù),完全可以做到隨心所欲地抓取,加之開(kāi)發(fā)流程也比較簡(jiǎn)單,因此有必要進(jìn)行基本的介紹。

Selenium本身只是個(gè)工具,而不是一個(gè)具體的瀏覽器,但是Selenium支持包括Chrome和Firefox在內(nèi)的主流瀏覽器。為了在Python中使用Selenium,需要安裝selenium庫(kù)(仍然通過(guò)pip install selenium的方式進(jìn)行安裝)。完成安裝后,為了使用特定的瀏覽器,可能需要下載對(duì)應(yīng)的驅(qū)動(dòng)。將下載到的文件放在某個(gè)路徑下。并在程序中指明該路徑即可。如果想避免每次配置路徑的麻煩,可以將該路徑設(shè)置為環(huán)境變量,這里就不再贅述了。

通過(guò)一個(gè)訪問(wèn)百度新聞?wù)军c(diǎn)的例子來(lái)引入selenium庫(kù),代碼如下:

運(yùn)行上面的代碼,會(huì)看到Chrome程序被打開(kāi),瀏覽器訪問(wèn)了百度首頁(yè),然后跳轉(zhuǎn)到了百度新聞頁(yè)面,之后又選擇了該頁(yè)面的第一個(gè)頭條新聞,從而打開(kāi)了新的新聞頁(yè)。一段時(shí)間后,瀏覽器關(guān)閉并退出。控制臺(tái)會(huì)輸出“百度一下,你就知道”(對(duì)應(yīng)browser.title)和http://news.bAIdu.com/(對(duì)應(yīng)browser.current_url)。這無(wú)疑是一個(gè)好消息,如果能獲取對(duì)瀏覽器的控制權(quán),那么爬取某一部分的內(nèi)容會(huì)變得如臂使指。

另外,selenium庫(kù)能夠提供實(shí)時(shí)網(wǎng)頁(yè)源碼,這使得通過(guò)結(jié)合Selenium和BeautifulSoup(以及其他上文所述的網(wǎng)頁(yè)元素解析方法)成為可能,如果對(duì)selenium庫(kù)自帶的元素定位API不甚滿意,那么這會(huì)是一個(gè)非常好的選擇。總的來(lái)說(shuō),使用selenium庫(kù)的主要步驟如下。

① 創(chuàng)建瀏覽器對(duì)象,即使用類似下面的語(yǔ)句:

② 訪問(wèn)頁(yè)面,主要使用browser.get方法,傳入目標(biāo)網(wǎng)頁(yè)地址。

③ 定位網(wǎng)頁(yè)元素,可以使用selenium自帶的元素查找API,即

還可以使用browser.page_source獲取當(dāng)前網(wǎng)頁(yè)源碼并使用BeautifulSoup等網(wǎng)頁(yè)解析工具定位:

④ 網(wǎng)頁(yè)交互,對(duì)元素進(jìn)行輸入、選擇等操作。如訪問(wèn)豆瓣并搜索某一關(guān)鍵字(效果見(jiàn)圖1-9)的代碼如下。

■ 圖1-9使用Selenium操作Chrome進(jìn)行豆瓣搜索的結(jié)果

在導(dǎo)航(窗口中的前進(jìn)與后退)方面,主要使用browser.back和browser.forward兩個(gè)函數(shù)。

⑤ 獲取元素屬性。可供使用的函數(shù)方法很多,例如:

之前曾對(duì)Selenium的基本使用做過(guò)簡(jiǎn)單的說(shuō)明,有了網(wǎng)站交互(而不是典型爬蟲(chóng)程序避開(kāi)瀏覽器界面的策略)還能夠完成很多測(cè)試工作,如找出異常表單、html排版錯(cuò)誤、頁(yè)面交互問(wèn)題。

分享到:
標(biāo)簽:Selenium
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定