国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Python】【進(jìn)階篇】二十四、Python爬蟲(chóng)的Selenium的基本用法

這篇具有很好參考價(jià)值的文章主要介紹了【Python】【進(jìn)階篇】二十四、Python爬蟲(chóng)的Selenium的基本用法。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

二十四、Python爬蟲(chóng)的Selenium的基本用法

Selenium 作為一款 Web 自動(dòng)化測(cè)試框架,提供了諸多操作瀏覽器的方法,本節(jié)對(duì)其中的常用方法做詳細(xì)介紹。

24.1 定位節(jié)點(diǎn)

Selenium 提供了 8 種定位單個(gè)節(jié)點(diǎn)的方法,如下所示:

定位節(jié)點(diǎn)方法 方法 | 說(shuō)明 ---|--- find_element_by_id() | 通過(guò) id 屬性值定位 find_element_by_name() | 通過(guò) name 屬性值定位 find_element_by_class_name() | 通過(guò) class 屬性值定位 find_element_by_tag_name() | 通過(guò) tag 標(biāo)簽名定位 find_element_by_link_text() | 通過(guò) 標(biāo)簽內(nèi)文本定位,即精準(zhǔn)定位。 find_element_by_partial_link_text() | 通過(guò) 標(biāo)簽內(nèi)部分文本定位,即模糊定位。 find_element_by_xpath() | 通過(guò) xpath 表達(dá)式定位 find_element_by_css_selector() | 通過(guò) css 選擇器定位

假設(shè)下面代碼某個(gè)頁(yè)面的代碼片段,如下所示:


<html>
<head>
<body link="#cc0916">
  <a id="logo" href="http://c.biancheng.net" onclick="">
   <form id="form" class="fm" name="f" action="c.biancheng.net">
    <span class="btn"></span>
    <input id="kw" class="s_ipt_wr" name="wd" value="" maxlength="255" autocomplete="off">
</body>
</head>
</html>

下面使用表格中提供的方法定位 input 輸出框。如下所示:

#創(chuàng)建browser是瀏覽器對(duì)象
browser = webdriver.Chrome()
#訪問(wèn)某個(gè)url得到上述代碼片段
browser.get('url')
#通過(guò)id定義輸入框
browser.dr.find_element_by_id("kw")
#通過(guò)class定義
browser.find_element_by_class_name("s_ipt_wr")
#通過(guò)name定位
browser.find_element_by_name("wd")
#通過(guò)tag name定位:
browser.find_element_by_tag_name("input")
#通過(guò)xpath定位
browser.find_element_by_xpath("http://*[@id='kw']")
#通過(guò)css選擇器定位
browser.find_element_by_css_selector("#kw")

通過(guò) a 標(biāo)簽內(nèi)的文本內(nèi)容定位節(jié)點(diǎn),如下所示:

<a class="vip" href="http://c.baincheng.net">C語(yǔ)言中文網(wǎng)</a>
<a class="search" href="http://www.baidu.com">hao123</a>

示例如下:

#使用全部文本內(nèi)容定位鏈接
browser.find_element_by_link_text("c語(yǔ)言中文網(wǎng)")
#使用部分文本內(nèi)容定位鏈接
browser.find_element_by_partial_link_text("123")

如果您想定位一組元素,方法如下所示:

find_elements_by_id()
find_elements_by_name()
find_elements_by_class_name()
find_elements_by_tag_name()
find_elements_by_link_text()
find_elements_by_partial_link_text()
find_elements_by_xpath()
find_elements_by_css_selector()

定位一組元素的方法與定位單個(gè)元素類(lèi)似,唯一的區(qū)別就是 element 后面多了一個(gè) s(表示復(fù)數(shù)),因此上述方法的返回值是一個(gè)列表,您可以使用 for
循環(huán)拿到所有的元素節(jié)點(diǎn)。

24.2 控制瀏覽器

Selenium 可以操控瀏覽器的窗口大小、刷新頁(yè)面,以及控制瀏覽器的前進(jìn)、后退等

1) 設(shè)置瀏覽器窗口大小、位置
from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
#參數(shù)數(shù)字為像素點(diǎn)
driver.set_window_size(480, 800)
#設(shè)置窗口位置
driver.set_window_position(100,200)
#同時(shí)設(shè)置窗口的大小和坐標(biāo)
driver.set_window_rect(450,300,32,50)
#退出瀏覽器
driver.quit()
2) 控制網(wǎng)頁(yè)前進(jìn)、后退、刷新頁(yè)面
from selenium import webdriver

driver = webdriver.Chrome()
# 訪問(wèn)C語(yǔ)言中文網(wǎng)首頁(yè)
first_url= 'http://c.biancheng.net'
driver.get(first_url)

# 訪問(wèn)c語(yǔ)言教程
second_url='http://c.biancheng.net/c/'
driver.get(second_url)

# 返回(后退)到c語(yǔ)言中文網(wǎng)首頁(yè)
driver.back()

# 前進(jìn)到C語(yǔ)言教程頁(yè)
driver.forward()

# 刷新當(dāng)前頁(yè)面相當(dāng)于F5
driver.refresh() 

# 退出/關(guān)閉瀏覽器
driver.quit()

24.3 WebDriver常用方法

上文中介紹了如何定位元素,以及如何設(shè)置瀏覽的大小、位置。 定位元素節(jié)點(diǎn)只是第一步, 定位之后還需要對(duì)這個(gè)元素進(jìn)行操作, 比如單擊按鈕,或者在輸入框輸入文本
, 下面介紹 WebDriver 中的最常用方法:


# 請(qǐng)求url
get(url)
# 模擬鍵盤(pán)輸入文本
send_keys (value)
# 清除已經(jīng)輸入的文本
clear()# 單擊已經(jīng)定位的元素
click()# 用于提交表單,比如百度搜索框內(nèi)輸入關(guān)鍵字之后的“回車(chē)” 操作
submit()#返回屬性的屬性值,返回元素的屬性值,可以是id、name、type 或其他任意屬性
get_attribute(name)
# 返回布爾值,檢查元素是否用戶可見(jiàn),比如 display屬性為hidden或者none
is_displayed() 

示例如下:

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
#模擬鍵盤(pán),輸出文本
driver.find_element_by_id("kw").send_keys("C語(yǔ)言中文網(wǎng)")
#單擊“百度”一下查找
driver.find_element_by_id("su").click()
time.sleep(3)
#退出瀏覽器
driver.quit()

除了上述方法外, WebDriver 還有一些常用屬性,如下所示:

from selenium import webdriver
driver = webdriver.Chrome()
# 獲取HTML結(jié)構(gòu)源碼
driver.page_source
#在源碼中查找指定的字符串
driver.page_source.find('字符串')
# 返回百度頁(yè)面底部備案信息
text = driver.find_element_by_id("cp").text
print(text)
# 獲取輸入框的尺寸
size = driver.find_element_by_id('kw').size
print(size)

輸出結(jié)果:

?2015 Baidu 使用百度前必讀 意見(jiàn)反饋 京 ICP 證 030173 號(hào)

{'width': 500, 'height': 22}

24.4 Selenium事件處理

Selenium WebDriver 提供了一些事件處理函數(shù)(鼠標(biāo)、鍵盤(pán)等),下面我們對(duì)常用的事件函數(shù)做簡(jiǎn)單介紹。

1) 鼠標(biāo)事件

Selenium WebDriver 將關(guān)于鼠標(biāo)的操作方法都封裝在 ActionChains 類(lèi)中,使用時(shí)需要引入 ActionChains 類(lèi),如下所示:

from selenium.webdriver.common.action_chains import ActionChains

該類(lèi)包含了鼠標(biāo)操作的常用方法:

鼠標(biāo)事件 方法 說(shuō)明
ActionChains(driver) 構(gòu)造 ActionChains 鼠標(biāo)對(duì)象。
click() 單擊
click_and_hold(on_element=None) 單擊鼠標(biāo)左鍵,不松開(kāi)
context_click() 右擊
double_click() 雙擊
drag_and_drop() 拖動(dòng)
move_to_element(above) 執(zhí)行鼠標(biāo)懸停操作
context_click() 用于模擬鼠標(biāo)右鍵操作, 在調(diào)用時(shí)需要指定元素定位。
perform() 將所有鼠標(biāo)操作提交執(zhí)行。

示例如下:

from selenium import webdriver
#導(dǎo)入 ActionChains 類(lèi)
from selenium.webdriver.common.action_chains import ActionChains

driver = webdriver.Chrome()
driver.get("http://c.biancheng.net")
# 通過(guò)xpath表達(dá)式定位到要懸停的元素
above = driver.find_element_by_xpath('//ul[@id="ad-link-top"]/li[1]')
# 對(duì)定位到的元素執(zhí)行鼠標(biāo)懸停操作
ActionChains(driver).move_to_element(above).perform()
2) 鍵盤(pán)事件

Selenium WebDriver 的 Keys 模塊提供了模擬鍵盤(pán)輸入的 send_keys()
方法,除此之外,該模塊也提供了操作鍵盤(pán)的其他方法,比如復(fù)制、粘貼等等。

在使用之前,首先需要導(dǎo)入 Keys 類(lèi),如下所示:

from selenium.webdriver.common.keys import Keys

下面列舉了一些常用方法:

鍵盤(pán)操作 方法 說(shuō)明
send_keys(Keys.BACK_SPACE) 刪除鍵(BackSpace)
send_keys(Keys.SPACE) 空格鍵(Space)
send_keys(Keys.TAB) 制表鍵(Tab)
send_keys(Keys.ESCAPE) 回退鍵(Esc)
send_keys(Keys.ENTER) 回車(chē)鍵(Enter)
send_keys(Keys.CONTROL,‘a(chǎn)’) 全選(Ctrl+A)
send_keys(Keys.CONTROL,‘c’) 復(fù)制(Ctrl+C)
send_keys(Keys.CONTROL,‘x’) 剪切(Ctrl+X)
send_keys(Keys.CONTROL,‘v’) 粘貼(Ctrl+V)
send_keys(Keys.F1…Fn) 鍵盤(pán) F1…Fn
keys.down(value,element=None) 按下鍵盤(pán)上的某個(gè)鍵
keys.up(value,element=None) 松開(kāi)鍵盤(pán)上的某個(gè)鍵

示例如下:

from selenium import webdriver
# 引入 Keys 模塊
from selenium.webdriver.common.keys import Keys

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

# 輸入框輸入內(nèi)容
driver.find_element_by_id("kw").send_keys("C語(yǔ)言中文網(wǎng)H")

# 刪除多輸入的一個(gè)H
driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)
#單擊“百度”一下查找
driver.find_element_by_id("su").click()
time.sleep(3)
driver.quit()

其它鍵盤(pán)操作方法,如下所示:

# 輸入空格鍵 + “Python教程”
driver.find_element_by_id("kw").send_keys(Keys.SPACE)
driver.find_element_by_id("kw").send_keys("Python教程")

# ctrl+a 全選輸入框內(nèi)容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'a')

# ctrl+x 剪切輸入框內(nèi)容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'x')

# ctrl+v 粘貼內(nèi)容到輸入框
driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'v')

# 使用回車(chē)鍵來(lái)代替單擊操作click
driver.find_element_by_id("su").send_keys(Keys.ENTER)

24.5 無(wú)界面瀏覽器

Chromedriver 每一次運(yùn)行都要打開(kāi)瀏覽器,并執(zhí)行相應(yīng)的輸入、搜索等操作,這樣會(huì)導(dǎo)致瀏覽器交互能力變差,浪費(fèi)許多時(shí)間。 Selenium
為了增強(qiáng)瀏覽器的交互能力,允許您使用無(wú)頭瀏覽器模式,也就是無(wú)界面瀏覽器,它被廣泛的應(yīng)用于爬蟲(chóng)和自動(dòng)化測(cè)試中。通過(guò)以下代碼可以設(shè)置無(wú)頭瀏覽器模式:

from selenium import webdriver
import time
options=webdriver.ChromeOptions()
options.add_argument('--headless')#無(wú)界面瀏覽
driver=webdriver.Chrome(options=options)
driver.get('https://www.baidu.com')
kw1=driver.find_element_by_id('kw')
print(driver.title)
time.sleep(3)
#關(guān)閉當(dāng)前界面,只有一個(gè)窗口
driver.close()
#關(guān)閉所有界面
driver.quit()

除了可以設(shè)置無(wú)頭界面之外,Selenium 還支持其他一些瀏覽器參數(shù)設(shè)置,如下所示:

opption.add_argument('--window-size=600,600') #設(shè)置窗口大小
opption.add_argument('--incognito') #無(wú)痕模式
opption.add_argument('--disable-infobars') #去掉chrome正受到自動(dòng)測(cè)試軟件的控制的提示
opption.add_argument('user-agent="XXXX"') #添加請(qǐng)求頭
opption.add_argument("--proxy-server=http://200.130.123.43:3456")#代理服務(wù)器訪問(wèn)
opption.add_experimental_option('excludeSwitches', ['enable-automation'])#開(kāi)發(fā)者模式
opption.add_argument('blink-settings=imagesEnabled=false')  #禁止加載圖片
opption.add_argument('lang=zh_CN.UTF-8') #設(shè)置默認(rèn)編碼為utf-8
opption.add_extension(create_proxyauth_extension(
            proxy_host='host',
            proxy_port='port',
            proxy_username="username",
            proxy_password="password"
        ))# 設(shè)置有賬號(hào)密碼的代理
opption.add_argument('--disable-gpu')  # 這個(gè)參數(shù)可以規(guī)避谷歌的部分bug
opption.add_argument('--disable-javascript')  # 禁用javascript
opption.add_argument('--hide-scrollbars')  # 隱藏滾動(dòng)條

24.6 執(zhí)行JS腳本

WebDriver 提供了 execute_script() 方法來(lái)執(zhí)行 JavaScript 代碼,比如控制瀏覽器的滾動(dòng)條。示例如下:

from selenium import webdriver
from time import sleep

# 訪問(wèn)百度
driver=webdriver.Chrome()
driver.get("http://www.baidu.com")
# 最大化瀏覽器窗口
driver.maximize_window()
# 搜索
driver.find_element_by_id("kw").send_keys("C語(yǔ)言中文網(wǎng)")
driver.find_element_by_id("su").click()
sleep(3)

# 通過(guò)js代碼設(shè)置滾動(dòng)條位置,數(shù)值代表(左邊距,上邊距)
js="window.scrollTo(100,500);"
#執(zhí)行js代碼
driver.execute_script(js)
sleep(5)
driver.quit()

如果想了解更多關(guān)于 Selenium 的知識(shí),請(qǐng)參考官方文檔文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-439839.html

到了這里,關(guān)于【Python】【進(jìn)階篇】二十四、Python爬蟲(chóng)的Selenium的基本用法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Python Selenium基本用法

    Python Selenium基本用法

    Selenium 作為一款 Web 自動(dòng)化測(cè)試框架,提供了諸多操作瀏覽器的方法,本節(jié)對(duì)其中的常用方法做詳細(xì)介紹。 定位節(jié)點(diǎn) Selenium 提供了 8 種定位單個(gè)節(jié)點(diǎn)的方法,如下所示: 定位節(jié)點(diǎn)方法 方法 說(shuō)明 find_element_by_id() 通過(guò) id 屬性值定位 find_element_by_name() 通過(guò) name 屬性值定位 find_

    2024年02月12日
    瀏覽(20)
  • Go分布式爬蟲(chóng)(二十四)

    Go分布式爬蟲(chóng)(二十四)

    爬蟲(chóng)項(xiàng)目的一個(gè)重要的環(huán)節(jié)就是把最終的數(shù)據(jù)持久化存儲(chǔ)起來(lái),數(shù)據(jù)可能會(huì)被存儲(chǔ)到 MySQL、MongoDB、Kafka、Excel 等多種數(shù)據(jù)庫(kù)、中間件或者是文件中。 之前我們爬取的案例比較簡(jiǎn)單,像是租房網(wǎng)站的信息等。但是實(shí)際情況下,我們的爬蟲(chóng)任務(wù)通常需要獲取結(jié)構(gòu)化的數(shù)據(jù)。例如一

    2023年04月20日
    瀏覽(35)
  • Python中的selenium庫(kù)的基本用法

    Selenium是一個(gè)用于測(cè)試網(wǎng)站的自動(dòng)化測(cè)試工具,支持各種瀏覽器包括Chrome、Firefox、Safari等主流界面瀏覽器,同時(shí)也支持phantomJS無(wú)界面瀏覽器。 通過(guò)此行代碼可以快速在Python中安裝selenium庫(kù) pip install Selenium 另外,我們?nèi)孕枰惭b瀏覽器驅(qū)動(dòng) Selenium3.x調(diào)用瀏覽器必須有一個(gè)webdr

    2023年04月20日
    瀏覽(18)
  • python爬蟲(chóng)教程:selenium常用API用法和瀏覽器控制

    python爬蟲(chóng)教程:selenium常用API用法和瀏覽器控制

    selenium api selenium 新版本( 4.8.2 )很多函數(shù),包括元素定位、很多 API 方法均發(fā)生變化,本文記錄以 selenium4.8.2 為準(zhǔn)。 webdriver 常用 API 方法 描述 get(String url) 訪問(wèn)目標(biāo)url地址,打開(kāi)網(wǎng)頁(yè) current_url 獲取當(dāng)前頁(yè)面url地址 title 獲取頁(yè)面標(biāo)題 page_source 獲取頁(yè)面源代碼 close() 關(guān)閉瀏覽器當(dāng)

    2024年02月05日
    瀏覽(29)
  • Python爬蟲(chóng)——selenium的安裝和基本使用

    Python爬蟲(chóng)——selenium的安裝和基本使用

    1.什么是selenium? selenium是一個(gè)用于web應(yīng)用程序測(cè)試的工具 selenium測(cè)試直接運(yùn)行在瀏覽器中,就像真正的用戶在操作一樣 支持通過(guò)各種driver(FrifoxDriver,ItenrentExploreDriver,OperaDriver,ChromeDriver )驅(qū)動(dòng) selenium也是支持無(wú)界面瀏覽器操作的 2.為什么使用selenium? 模擬瀏覽器功能,

    2024年02月13日
    瀏覽(54)
  • 【Python從入門(mén)到進(jìn)階】35、selenium基本語(yǔ)法學(xué)習(xí)

    【Python從入門(mén)到進(jìn)階】35、selenium基本語(yǔ)法學(xué)習(xí)

    接上篇《34、selenium基本概念及安裝流程》 上一篇我們介紹了selenium技術(shù)的基礎(chǔ)概念以及安裝和調(diào)用的流程,本篇我們來(lái)學(xué)習(xí)selenium的基本語(yǔ)法,包括元素定位以及訪問(wèn)元素信息的操作。 Selenium元素定位是指通過(guò)特定的方法在網(wǎng)頁(yè)中準(zhǔn)確定位到需要操作的元素,例如按鈕、文本

    2024年02月09日
    瀏覽(15)
  • Python爬蟲(chóng)進(jìn)階(1),Django+Selenium+Mysql+SimpleUI,從零開(kāi)始搭建自己的爬蟲(chóng)后臺(tái)管理系統(tǒng)

    Python爬蟲(chóng)進(jìn)階(1),Django+Selenium+Mysql+SimpleUI,從零開(kāi)始搭建自己的爬蟲(chóng)后臺(tái)管理系統(tǒng)

    如果爬蟲(chóng)做完的話都會(huì)發(fā)現(xiàn)每個(gè)文件要么保存到csv或者是其他格式的文件中,這樣做多少會(huì)有些麻煩,所以需要將這些內(nèi)容保存起來(lái)方便自己管理和查看內(nèi)容。 相對(duì)于flask而言Django有著相對(duì)成熟的一個(gè)后臺(tái)管理系統(tǒng)配合上其他一些插件就可以做到即插即用的效果而不用自己再

    2024年02月08日
    瀏覽(21)
  • 【Python從入門(mén)到進(jìn)階】34、selenium基本概念及安裝流程

    【Python從入門(mén)到進(jìn)階】34、selenium基本概念及安裝流程

    接上篇《33、使用bs4獲取星巴克產(chǎn)品信息》 上一篇我們介紹了如何使用bs4來(lái)解析星巴克網(wǎng)站,獲取其產(chǎn)品信息。本篇我們來(lái)了解selenium技術(shù)的基礎(chǔ)。 Selenium是一種用于自動(dòng)化Web瀏覽器操作的開(kāi)源工具。它提供了一組API(應(yīng)用程序接口),使開(kāi)發(fā)人員能夠使用多種編程語(yǔ)言(如

    2024年02月10日
    瀏覽(44)
  • 【Python】WebUI自動(dòng)化—Selenium的下載和安裝、基本用法、項(xiàng)目實(shí)戰(zhàn)(16)

    【Python】WebUI自動(dòng)化—Selenium的下載和安裝、基本用法、項(xiàng)目實(shí)戰(zhàn)(16)

    Selenium 是一個(gè)用于測(cè)試 Web 應(yīng)用程序 的自動(dòng)化測(cè)試工具,它直接運(yùn)行在 瀏覽器 中,實(shí)現(xiàn)了對(duì)瀏覽器的自動(dòng)化操作,它支持所有主流的瀏覽器,包括 IE,F(xiàn)irefox,Safari,Chrome 等。 -支持所有主流平臺(tái)(如, Windows、Linux、IOS、Android、Edge、Opera 等) 實(shí)現(xiàn)了諸多 自動(dòng)化功能 ,比如

    2024年02月08日
    瀏覽(30)
  • python爬蟲(chóng)進(jìn)階篇:Scrapy中使用Selenium模擬Firefox火狐瀏覽器爬取網(wǎng)頁(yè)信息

    接著上一篇的筆記,Scrapy爬取普通無(wú)反爬、靜態(tài)頁(yè)面的網(wǎng)頁(yè)時(shí)可以順利爬取我們要的信息。但是大部分情況下我們要的數(shù)據(jù)所在的網(wǎng)頁(yè)它是動(dòng)態(tài)加載出來(lái)的(ajax請(qǐng)求后傳回前端頁(yè)面渲染、js調(diào)用function等)。這種情況下需要使用selenium進(jìn)行模擬人工操作瀏覽器行為,實(shí)現(xiàn)自動(dòng)化

    2024年02月04日
    瀏覽(101)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包