电竞比分网-中国电竞赛事及体育赛事平台

分享

python爬蟲(chóng)09 | 上來(lái),自己動(dòng) !這就是 selenium 的牛逼之處

 小帥b 2021-10-12

作為一個(gè)男人

在最高光的時(shí)刻

就是說(shuō)出那句

之后

還不會(huì)被人打

...

雖然在現(xiàn)實(shí)生活中你無(wú)法這樣

但是在這里

就讓你體驗(yàn)一番

那種呼風(fēng)喚雨的感覺(jué)

我們之前在爬取某些網(wǎng)站的時(shí)候

使用到了一些 python 的請(qǐng)求庫(kù)

模擬瀏覽器的請(qǐng)求

我們需要抓包啥的

能不能不這樣

可不可以就寫(xiě)幾行代碼

讓它自己去打開(kāi)瀏覽器

自己去請(qǐng)求我們要爬取的網(wǎng)站

自己去模擬我們的一些搜索

等等

反正就是

老子躺著,讓它自己動(dòng)

躺好

讓 selenium 滿足你的要求

怎么玩呢?

那么接下里就是

學(xué)習(xí) python 的正確姿勢(shì)

什么是 selenium ?

其實(shí)它就是一個(gè)自動(dòng)化測(cè)試工具,支持各種主流的瀏覽器

直到遇到了 python

轉(zhuǎn)身一變

selenium 變成了爬蟲(chóng)利器

我們先來(lái)安裝一下

pip install selenium

接著我們還要下載瀏覽器驅(qū)動(dòng)

小帥b用的是 Chrome 瀏覽器

所以下載的是 Chrome 驅(qū)動(dòng)

當(dāng)然你用別的瀏覽器也闊以

去相應(yī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:///blog/6900/webdriver-support-in-safari-10/

下載完之后

要配置一下環(huán)境變量

接著打開(kāi) pycharm

擼點(diǎn)代碼

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://www.baidu.com")

input = driver.find_element_by_css_selector('#kw')
input.send_keys("蒼老師照片")

button = driver.find_element_by_css_selector('#su')
button.click()

運(yùn)行一下

可以看到

它自己打開(kāi)了 Chrome 瀏覽器

訪問(wèn)了百度

搜索了蒼老師的照片

這就是 selenium 的魅力

我們來(lái)看下我們剛剛寫(xiě)的代碼

我們導(dǎo)入了 web 驅(qū)動(dòng)模塊

from selenium import webdriver

接著我們創(chuàng)建了一個(gè) Chrome 驅(qū)動(dòng)

driver = webdriver.Chrome()

有了實(shí)例之后

相當(dāng)于我們有了 Chrome 瀏覽器了

接著使用 get 方法打開(kāi)百度

driver.get("https://www.baidu.com")

打開(kāi)百度之后

我們獲取到輸入框

至于怎么獲取

等等會(huì)講

獲取到輸入框之后我們就往里面寫(xiě)入我們要搜索的內(nèi)容

input = driver.find_element_by_css_selector('#kw')
input.send_keys("蒼老師照片")

輸入完了之后呢

我們就獲取到搜索這個(gè)按鈕

然后點(diǎn)擊

button = driver.find_element_by_css_selector('#su')
button.click()

就這樣完成了一次自動(dòng)的百度搜索

當(dāng)我們使用驅(qū)動(dòng)打開(kāi)了一個(gè)頁(yè)面

這時(shí)候其實(shí)沒(méi)什么鳥(niǎo)用

因?yàn)槲覀円獙?duì)那些元素進(jìn)行操作

就像剛剛我們要獲取輸入框然后輸入一些內(nèi)容

還有獲取按鈕點(diǎn)擊什么的

selenium 提供了挺多方法給我們獲取的

當(dāng)我們要在頁(yè)面中獲取一個(gè)元素的時(shí)候

可以使用這些方法

  • find_element_by_id

  • find_element_by_name

  • find_element_by_xpath

  • find_element_by_link_text

  • find_element_by_partial_link_text

  • find_element_by_tag_name

  • find_element_by_class_name

  • find_element_by_css_selector

想要在頁(yè)面獲取多個(gè)元素呢

就可以這樣

  • find_elements_by_name

  • find_elements_by_xpath

  • find_elements_by_link_text

  • find_elements_by_partial_link_text

  • find_elements_by_tag_name

  • find_elements_by_class_name

  • find_elements_by_css_selector

比如我們打開(kāi)了一個(gè)頁(yè)面

是這樣的 HTML

<html>
<body>
 <form id="loginForm">
  <input name="username" type="text" />
  <input name="password" type="password" />
  <input class="login" name="continue" type="submit" value="Login" />
 </form>
</body>
<html>

可以通過(guò) id 獲取 form 表單

login_form = driver.find_element_by_id('loginForm')

通過(guò) name 獲取相應(yīng)的輸入框

username = driver.find_element_by_name('username')
password = driver.find_element_by_name('password')

通過(guò) xpath 獲取表單

login_form = driver.find_element_by_xpath("/html/body/form[1]")
login_form = driver.find_element_by_xpath("http://form[1]")
login_form = driver.find_element_by_xpath("http://form[@id='loginForm']")

通過(guò)標(biāo)簽獲取相應(yīng)的輸入框

input1 = driver.find_element_by_tag_name('input')

通過(guò) class 獲取相應(yīng)的元素

login = driver.find_element_by_class_name('login')

用 Chrome 瀏覽器的審核元素

可以很方便獲取相應(yīng)的屬性

直接 copy 就完事了

如果你覺(jué)得

find_element_by_xxx_xxx

太長(zhǎng)了

那么你還可以這樣

driver.find_elements(By.ID, 'xxx')

By.屬性和上面的是一樣的

ID = "id"
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
NAME = "name"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"

當(dāng)然

我們玩的是爬蟲(chóng)

要的就是源代碼

我們已經(jīng)知道

通過(guò)

driver = webdriver.Chrome()

可以拿到瀏覽器對(duì)象

那么要獲取源代碼還不簡(jiǎn)單么?

獲取請(qǐng)求鏈接

driver.current_url

獲取 cookies

driver.get_cookies()

獲取源代碼

driver.page_source

獲取文本的值

input.text

ok

以上就是 selenium 的常用方法

想要了解更多相關(guān) selenium 的可以到官方文檔查看

https://selenium-python./

下一次

小帥b將帶你使用它來(lái)爬取網(wǎng)站

本篇完

再見(jiàn)

近期文章

python爬蟲(chóng)08 | 你的第二個(gè)爬蟲(chóng),要過(guò)年了,爬取豆瓣最受歡迎的250部電影慢慢看

python爬蟲(chóng)07 | 有了 BeautifulSoup ,媽媽再也不用擔(dān)心我的正則表達(dá)式了

python爬蟲(chóng)06 | 你的第一個(gè)爬蟲(chóng),爬取當(dāng)當(dāng)網(wǎng) Top 500 本五星好評(píng)書(shū)籍

掃一掃

學(xué)習(xí) Python 沒(méi)煩惱

堅(jiān)持原創(chuàng)

給小帥b來(lái)個(gè)好看

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多