Selenium(十一)

有時(shí)web頁面太復(fù)雜波材,無法找到API請(qǐng)求股淡。這是我們就可以使用selenium了。(selenium類似于phantomjs無頭瀏覽器一樣廷区,是一個(gè)自動(dòng)化的瀏覽器唯灵,可用于自動(dòng)化測(cè)試和爬蟲開發(fā))

Selenium-python模塊

1.selenium介紹

注意:appnium的核心就用到了selenium的使用。
selenium通過瀏覽器驅(qū)動(dòng)驅(qū)動(dòng)瀏覽器隙轻,就好像一個(gè)真正的用戶在操作一樣埠帕,支持大部分的主流瀏覽器,包括IE玖绿,F(xiàn)irefox敛瓷,Safari,Chrome斑匪,Opera等呐籽。我們可以利用它來模擬用戶訪問頁面,點(diǎn)擊按鈕等蚀瘸,可以繞過一些復(fù)雜的認(rèn)證場(chǎng)景狡蝶,和js參數(shù)構(gòu)造等反爬措施。
selenium官方文檔:https://seleniumhq.github.io/selenium/docs/api/py/index.html
selenium官方網(wǎng)站:https://www.seleniumhq.org/
注意:selenium本身不是瀏覽器贮勃,它是一個(gè)瀏覽器驅(qū)動(dòng)

2.安裝

2.1 selenium的安裝

selenium的安裝非常簡(jiǎn)單贪惹,一般情況下在命令行運(yùn)行:

pip install selenium

2.2 瀏覽器驅(qū)動(dòng)安裝

selenium是通過瀏覽器驅(qū)動(dòng)來操作瀏覽器的。不同的瀏覽器需要下載不同的驅(qū)動(dòng)寂嘉。

瀏覽器 地址
Chrome: https://sites.google.com/a/chromium.org/chromedriver/downloads
Edge: https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
Firefox: https://github.com/mozilla/geckodriver/releases
Safari: https://webkit.org/blog/6900/webdriver-support-in-safari-10/

上表是主要的幾大瀏覽器的驅(qū)動(dòng)下載地址奏瞬。
注意:https://blog.csdn.net/yoyocat915/article/details/80580066-------2019 Selenium Chrome版本與chromedriver兼容版本對(duì)照表。
注意:https://jingyan.baidu.com/article/fea4511a2a5270f7bb9125dc.html----搭建python下selenium驅(qū)動(dòng)google chrome環(huán)境

我們以chrome為例泉孩,驅(qū)動(dòng)和瀏覽器版本對(duì)應(yīng)硼端,所以首先你要看你電腦中的瀏覽器什么版本。

根據(jù)查看到的版本下載相應(yīng)驅(qū)動(dòng)
下載好的驅(qū)動(dòng)解壓后是一個(gè)可執(zhí)行文件寓搬,windows下是chromedriver.exe显蝌,linux下是chromedriver(無后綴名)。下載好后將驅(qū)動(dòng)文件放到環(huán)境變量中的文件夾下,可以放到python解釋器的根目錄曼尊。

3.開始使用

3.1簡(jiǎn)單案例

安裝好環(huán)境后,我們就可以開始使用了

import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

# 打開谷歌瀏覽器并且創(chuàng)建谷歌瀏覽器的實(shí)例
driver = webdriver.Chrome('D:\\Pycharm\\high_spider\\chromedriver.exe')
# 訪問頁面
driver.get('http://www.python.org') #等到頁面加載完畢脏嚷,onload事件觸發(fā)才會(huì)返回骆撇,但是對(duì)于ajax請(qǐng)求不知道何時(shí)進(jìn)行加載。
# 獲取屬性name='q'的元素
elem = driver.find_element_by_name('q')
# 清空它的text值父叙,如果它是一個(gè)可以輸入text的元素
elem.clear()
# 模擬輸入'pycon'
elem.send_keys('pycon')
# 模擬回車鍵進(jìn)行搜索
elem.send_keys(Keys.ENTER)

time.sleep(3)
# 關(guān)閉瀏覽器
driver.close()

上面的代碼會(huì)代開谷歌瀏覽器神郊,然后訪問http://www.python.org,在搜索框輸入pycon,然后回車,最后關(guān)閉瀏覽器趾唱,這一切就像有人操作一樣涌乳。

3.2代碼解釋

selenium.webdriver模塊提供了所有的瀏覽器驅(qū)動(dòng)實(shí)現(xiàn)。目前支持的瀏覽器有甜癞,Firefox, Chrome,IE等主流瀏覽器夕晓。Keys類提供了鍵盤按鍵例如Enter,F1,ALT等等。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

接下來悠咱,創(chuàng)建谷歌瀏覽器驅(qū)動(dòng)的實(shí)例

driver = webdriver.Chrome()

driver.get方法將會(huì)訪問提供的URL的頁面蒸辆。WebDriver會(huì)等到頁面完全加載(也就是說,“onload”事件已經(jīng)觸發(fā))之后才會(huì)返回析既。值得注意的是躬贡,如果您的頁面在加載時(shí)使用了大量AJAX,那么WebDriver可能不知道它何時(shí)完全加載完畢眼坏。

driver.get("http://www.python.org")

WebDriver提供了一些通過find_element_by_*的方法來查找元素拂玻。例如,元素input text能夠被方法find_element_by_name方法通過它的name屬性定位宰译。

elem = driver.find_element_by_name("q")

接下來檐蚜,我們發(fā)送鍵,這類似于使用鍵盤輸入鍵囤屹“旧酰可以使用selenium.webdriver.common.keys導(dǎo)入的Keys類來發(fā)送特殊的功能鍵。為了安全肋坚,我們首先清空任何input標(biāo)簽輸入框中預(yù)填充的文本(例如“Search”)以免它會(huì)影響我們的搜索結(jié)果:

elem.clear()
elem.send_keys("pycon")
elem.send_keys(Keys.RETURN)

最后乡括,關(guān)閉瀏覽器窗口。您還可以調(diào)用quit方法而不是close智厌。退出將退出整個(gè)瀏覽器(quit)诲泌,而關(guān)閉將關(guān)閉一個(gè)標(biāo)簽頁(close),但如果只有一個(gè)標(biāo)簽頁是打開的铣鹏,默認(rèn)情況下敷扫,大多數(shù)瀏覽器將完全退出。

driver.close()  

補(bǔ)充點(diǎn):
chromedriver.exe下載好后進(jìn)行相應(yīng)的環(huán)境配置有3種方式:
(1)直接將chromedriver.exe所在的絕對(duì)路徑配置到系統(tǒng)環(huán)境變量path中去。
(2)將chromedriver.exe放到和虛擬環(huán)境下的python.exe同級(jí)目錄下即可葵第。


(3)直接在webdriver.Chrome()的括號(hào)中進(jìn)行添加chromedriver.exe的絕對(duì)路徑即可绘迁。

from selenium import webdriver
webdriver.Chrome('d:\\ji\\chromedriver.exe')
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市卒密,隨后出現(xiàn)的幾起案子缀台,更是在濱河造成了極大的恐慌,老刑警劉巖哮奇,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件膛腐,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡鼎俘,警方通過查閱死者的電腦和手機(jī)哲身,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贸伐,“玉大人勘天,你說我怎么就攤上這事」髫ぃ” “怎么了误辑?”我有些...
    開封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)歌逢。 經(jīng)常有香客問我巾钉,道長(zhǎng),這世上最難降的妖魔是什么秘案? 我笑而不...
    開封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任砰苍,我火速辦了婚禮,結(jié)果婚禮上阱高,老公的妹妹穿的比我還像新娘赚导。我一直安慰自己,他們只是感情好赤惊,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開白布吼旧。 她就那樣靜靜地躺著,像睡著了一般未舟。 火紅的嫁衣襯著肌膚如雪圈暗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天裕膀,我揣著相機(jī)與錄音员串,去河邊找鬼。 笑死昼扛,一個(gè)胖子當(dāng)著我的面吹牛寸齐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼渺鹦,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼扰法!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起海铆,我...
    開封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤迹恐,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后卧斟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡憎茂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年珍语,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片竖幔。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡板乙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拳氢,到底是詐尸還是另有隱情募逞,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布馋评,位于F島的核電站放接,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏留特。R本人自食惡果不足惜纠脾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蜕青。 院中可真熱鬧苟蹈,春花似錦、人聲如沸右核。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽贺喝。三九已至菱鸥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間搜变,已是汗流浹背采缚。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留挠他,地道東北人扳抽。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親贸呢。 傳聞我的和親對(duì)象是個(gè)殘疾皇子镰烧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容