最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

selenium環(huán)境搭建及基本元素定位方式詳解

 更新時(shí)間:2023年04月06日 08:16:26   作者:少壯不努力123  
selenium最初是一個(gè)自動(dòng)化測(cè)試工具,而爬蟲中使用它主要是為了解決requests無法執(zhí)行javaScript代碼的問題,這篇文章主要介紹了selenium環(huán)境搭建及基本元素定位方式,需要的朋友可以參考下

谷歌驅(qū)動(dòng)下載地址:

http://chromedriver.storage.googleapis.com/index.html

一、selenium簡(jiǎn)介

由于requests模塊是一個(gè)不完全模擬瀏覽器行為的模塊,只能爬取到網(wǎng)頁(yè)的HTML文檔信息,無法解析和執(zhí)行CSS、JavaScript代碼,因此需要我們做人為判斷;

1、什么是selenium selenium最初是一個(gè)自動(dòng)化測(cè)試工具,而爬蟲中使用它主要是為了解決requests無法執(zhí)行javaScript代碼的問題。selenium模塊本質(zhì)是通過驅(qū)動(dòng)瀏覽器,完全模擬瀏覽器的操作,比如跳轉(zhuǎn)、輸入、點(diǎn)擊、下拉等,來拿到網(wǎng)頁(yè)渲染之后的結(jié)果,可支持多種瀏覽器;由于selenium解析執(zhí)行了CSS、JavaScript所以相對(duì)requests它的性能是低下的;

2、selenium的用途

1)selenium可以驅(qū)動(dòng)瀏覽器自動(dòng)執(zhí)行自定義好的邏輯代碼,也就是可以通過代碼完全模擬成人類使用瀏覽器自動(dòng)訪問目標(biāo)站點(diǎn)并操作,那我們也可以拿它來做爬蟲。

2)selenium本質(zhì)上是通過驅(qū)動(dòng)瀏覽器,完全模擬瀏覽器的操作,比如跳轉(zhuǎn)、輸入、點(diǎn)擊、下拉等...進(jìn)而拿到網(wǎng)頁(yè)渲染之后的結(jié)果,可支持多種瀏覽器

二、selenium的安裝與測(cè)試

1、下載selenium模塊:pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple selenium或者在pycharm中下載

2、安裝瀏覽器驅(qū)動(dòng)1) Google瀏覽器驅(qū)動(dòng)(在下載驅(qū)動(dòng)之前,查看一下chrome瀏覽器的版本號(hào),如下:

    1)谷歌驅(qū)動(dòng)下載地址:

 http://chromedriver.storage.googleapis.com/index.html

當(dāng)然也可以去官網(wǎng)找最新的版本,官網(wǎng): https://sites.google.com/a/chromium.org/chromedriver/downloads另外注意:把下載好的chromedriver.exe放到python安裝路徑的scripts目錄中即可

    2) firefox瀏覽器驅(qū)動(dòng):selenium3默認(rèn)支持的webdriver是Firfox,而Firefox需要安裝geckodriver下載鏈接:https://github.com/mozilla/geckodriver/releases

     3) 測(cè)試是否安裝成功

from selenium import webdriver
browser=webdriver.Chrome()
# # 打開瀏覽器
browser.get('https://baidu.com')
s=browser.find_element_by_id('kw') # 其中kw便是頁(yè)面中某個(gè)元素的id值
print(s)

2.1 設(shè)置瀏覽器驅(qū)動(dòng)

from selenium import webdriver
driver = webdriver.Firefox() # Firefox瀏覽器
driver = webdriver.Chrome() # Chrome瀏覽器
driver = webdriver.Ie() # Ie瀏覽器
driver = webdriver.Edge() # Edge瀏覽器
driver = webdriver.PhantomJS() # PhantomJS()

2.2 Selenium 元素定位

<html>
  <head>
  <body link="#0000cc">
    <a id="result_logo" href="/" onmousedown="return c({'fm':'tab','tab':'logo'})">
    <form id="form" class="fm" name="f" action="/s">
      <span class="soutu-btn"></span>
        <input id="kw" class="s_ipt" name="wd" value="" maxlength="255" autocomplete="off">
# 通過 id 定位
dr.find_element_by_id("kw")
 
# 通過name定位:
dr.find_element_by_name("wd")
 
# 通過class name定位:
dr.find_element_by_class_name("s_ipt")
 
# 通過tag name定位:
dr.find_element_by_tag_name("input")
 
# 通過 xpath 定位的幾種寫法
dr.find_element_by_xpath("http://*[@id='kw']")
dr.find_element_by_xpath("http://*[@name='wd']"
)dr.find_element_by_xpath("http://input[@class='s_ipt']")
dr.find_element_by_xpath("/html/body/form/span/input")
dr.find_element_by_xpath("http://span[@class='soutu-btn']/input")
dr.find_element_by_xpath("http://form[@id='form']/span/input")
dr.find_element_by_xpath("http://input[@id='kw' and @name='wd']")
 
# 通過 css 定位的幾種寫法
dr.find_element_by_css_selector("#kw")
dr.find_element_by_css_selector("[name=wd]")
dr.find_element_by_css_selector(".s_ipt")
dr.find_element_by_css_selector("html > body > form > span > input")
dr.find_element_by_css_selector("span.soutu-btn> input#kw")
dr.find_element_by_css_selector("form#form > span > input")
 
# 通過 link_text 定位
dr.find_element_by_link_text("新聞")
dr.find_element_by_link_text("hao123")
dr.find_element_by_partial_link_text("新")
dr.find_element_by_partial_link_text("hao")
dr.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()

三、selenium的使用

所謂模擬瀏覽器基本就是下面的流程:

請(qǐng)求

顯示頁(yè)面

查找元素

點(diǎn)擊可點(diǎn)擊元素

所以如何使用selenium找到頁(yè)面中的標(biāo)簽,進(jìn)而觸發(fā)標(biāo)簽事件,就會(huì)變的尤為重要

1. selenium選擇器
要想定位頁(yè)面的元素,selenium也提供了一系列的方法。
1) 通過標(biāo)簽id屬性進(jìn)行定位
browser.find_element_by_id('kw') # 其中kw便是頁(yè)面中某個(gè)元素的id值
2) 通過標(biāo)簽name屬性進(jìn)行定位
# 兩種方式是一樣的
browser.find_element_by_name("wd") # 其中wd是頁(yè)面中某個(gè)元素的name值
3) 通過標(biāo)簽名進(jìn)行定位
browser.find_element_by_tag_name("img") # img參數(shù)表示的就是圖片標(biāo)簽img
4) 通過CSS查找方式進(jìn)行定位
browser.find_elements_by_css_selector("#kw") # 根據(jù)選擇器進(jìn)行定位查找,其中#kw表示的是id選擇器名稱是kw的
5) 通過xpath方式定位
browser.find_element_by_xpath('//*[@id="kw"]') # 參數(shù)即是xpath的語法
6) 通過搜索頁(yè)面中鏈接進(jìn)行定位
有時(shí)候不是一個(gè)輸入框也不是一個(gè)按鈕,而是一個(gè)文字鏈接,我們可以通過link
browser.find_element_by_link_text("設(shè)置")
通過搜索頁(yè)面中鏈接進(jìn)行定位 ,可以支持模糊匹配**
browser.find_element_by_partial_link_text("百度") # 查找頁(yè)面所有的含有百度的文字鏈接

到此這篇關(guān)于selenium環(huán)境搭建及基本元素定位方式的文章就介紹到這了,更多相關(guān)selenium環(huán)境搭建內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 一起來看看五條Python中的隱含特性

    一起來看看五條Python中的隱含特性

    這篇文章主要為大家詳細(xì)介紹了Python中的隱含特性,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • python 連接sqlite及簡(jiǎn)單操作

    python 連接sqlite及簡(jiǎn)單操作

    本文通過實(shí)例代碼給大家介紹了python 連接sqlite及簡(jiǎn)單操作,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2017-06-06
  • pandas帶有重復(fù)索引操作方法

    pandas帶有重復(fù)索引操作方法

    今天小編就為大家分享一篇pandas帶有重復(fù)索引操作方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Python OpenCV閾值處理詳解

    Python OpenCV閾值處理詳解

    閾值處理是一種簡(jiǎn)單、有效的將圖像劃分為前景和背景的方法。圖像分割通常用于根據(jù)對(duì)象的某些屬性(例如,顏色、邊緣或直方圖)從背景中提取對(duì)象。本文將為大家詳細(xì)介紹OpenCV中的閾值處理,需要的可以參考一下
    2022-02-02
  • Python異常處理如何才能寫得優(yōu)雅(retrying模塊)

    Python異常處理如何才能寫得優(yōu)雅(retrying模塊)

    異常就是程序運(yùn)行時(shí)發(fā)生錯(cuò)誤的信號(hào),下面這篇文章主要給大家介紹了關(guān)于Python異常處理的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • Python中如何給字典設(shè)置默認(rèn)值

    Python中如何給字典設(shè)置默認(rèn)值

    這篇文章主要介紹了Python中如何給字典設(shè)置默認(rèn)值問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 利用Python通過商品條形碼查詢商品信息的實(shí)現(xiàn)示例

    利用Python通過商品條形碼查詢商品信息的實(shí)現(xiàn)示例

    這篇文章主要介紹了利用Python通過商品條形碼查詢商品信息,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 使用 Python 創(chuàng)建一個(gè)基于規(guī)則的聊天機(jī)器人

    使用 Python 創(chuàng)建一個(gè)基于規(guī)則的聊天機(jī)器人

    這篇文章主要介紹了使用 Python 創(chuàng)建一個(gè)基于規(guī)則的聊天機(jī)器人,使用 Python 創(chuàng)建一個(gè)簡(jiǎn)單的基于規(guī)則的聊天機(jī)器人 聊天機(jī)器人本身是一種機(jī)器或軟件,它通過文本或句子模仿人類交互。 簡(jiǎn)而言之,可以使用類似于與人類對(duì)話的軟件進(jìn)行聊天。
    2021-10-10
  • Python判斷Abundant Number的方法

    Python判斷Abundant Number的方法

    這篇文章主要介紹了Python判斷Abundant Number的方法,實(shí)例分析了Python針對(duì)盈數(shù)的判斷技巧,需要的朋友可以參考下
    2015-06-06
  • python實(shí)現(xiàn)自動(dòng)生成C++代碼的代碼生成器

    python實(shí)現(xiàn)自動(dòng)生成C++代碼的代碼生成器

    這篇文章介紹了python實(shí)現(xiàn)C++代碼生成器的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07

最新評(píng)論

峨边| 岳西县| 双鸭山市| 邹平县| 华蓥市| 新晃| 安仁县| 甘谷县| 会昌县| 三台县| 赤峰市| 九寨沟县| 崇礼县| 密云县| 张家港市| 大余县| 林甸县| 高平市| 合水县| 特克斯县| 静安区| 乐东| 湾仔区| 彭州市| 澄迈县| 西华县| 鹿邑县| 韶关市| 项城市| 大同县| 中西区| 沂源县| 光泽县| 涟源市| 靖宇县| 留坝县| 南宁市| 惠安县| 土默特左旗| 凉城县| 册亨县|