selenium環(huán)境搭建及基本元素定位方式詳解
谷歌驅動下載地址:
http://chromedriver.storage.googleapis.com/index.html
一、selenium簡介
由于requests模塊是一個不完全模擬瀏覽器行為的模塊,只能爬取到網頁的HTML文檔信息,無法解析和執(zhí)行CSS、JavaScript代碼,因此需要我們做人為判斷;
1、什么是selenium selenium最初是一個自動化測試工具,而爬蟲中使用它主要是為了解決requests無法執(zhí)行javaScript代碼的問題。selenium模塊本質是通過驅動瀏覽器,完全模擬瀏覽器的操作,比如跳轉、輸入、點擊、下拉等,來拿到網頁渲染之后的結果,可支持多種瀏覽器;由于selenium解析執(zhí)行了CSS、JavaScript所以相對requests它的性能是低下的;
2、selenium的用途
1)selenium可以驅動瀏覽器自動執(zhí)行自定義好的邏輯代碼,也就是可以通過代碼完全模擬成人類使用瀏覽器自動訪問目標站點并操作,那我們也可以拿它來做爬蟲。
2)selenium本質上是通過驅動瀏覽器,完全模擬瀏覽器的操作,比如跳轉、輸入、點擊、下拉等...進而拿到網頁渲染之后的結果,可支持多種瀏覽器
二、selenium的安裝與測試
1、下載selenium模塊:pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple selenium或者在pycharm中下載
2、安裝瀏覽器驅動1) Google瀏覽器驅動(在下載驅動之前,查看一下chrome瀏覽器的版本號,如下:
1)谷歌驅動下載地址:
http://chromedriver.storage.googleapis.com/index.html
當然也可以去官網找最新的版本,官網: https://sites.google.com/a/chromium.org/chromedriver/downloads另外注意:把下載好的chromedriver.exe放到python安裝路徑的scripts目錄中即可
2) firefox瀏覽器驅動:selenium3默認支持的webdriver是Firfox,而Firefox需要安裝geckodriver下載鏈接:https://github.com/mozilla/geckodriver/releases
3) 測試是否安裝成功
from selenium import webdriver
browser=webdriver.Chrome()
# # 打開瀏覽器
browser.get('https://baidu.com')
s=browser.find_element_by_id('kw') # 其中kw便是頁面中某個元素的id值
print(s)2.1 設置瀏覽器驅動
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的使用
所謂模擬瀏覽器基本就是下面的流程:
請求
顯示頁面
查找元素
點擊可點擊元素
所以如何使用selenium找到頁面中的標簽,進而觸發(fā)標簽事件,就會變的尤為重要
1. selenium選擇器
要想定位頁面的元素,selenium也提供了一系列的方法。
1) 通過標簽id屬性進行定位
browser.find_element_by_id('kw') # 其中kw便是頁面中某個元素的id值
2) 通過標簽name屬性進行定位
# 兩種方式是一樣的
browser.find_element_by_name("wd") # 其中wd是頁面中某個元素的name值
3) 通過標簽名進行定位
browser.find_element_by_tag_name("img") # img參數(shù)表示的就是圖片標簽img
4) 通過CSS查找方式進行定位
browser.find_elements_by_css_selector("#kw") # 根據選擇器進行定位查找,其中#kw表示的是id選擇器名稱是kw的
5) 通過xpath方式定位
browser.find_element_by_xpath('//*[@id="kw"]') # 參數(shù)即是xpath的語法
6) 通過搜索頁面中鏈接進行定位
有時候不是一個輸入框也不是一個按鈕,而是一個文字鏈接,我們可以通過link
browser.find_element_by_link_text("設置")
通過搜索頁面中鏈接進行定位 ,可以支持模糊匹配**
browser.find_element_by_partial_link_text("百度") # 查找頁面所有的含有百度的文字鏈接到此這篇關于selenium環(huán)境搭建及基本元素定位方式的文章就介紹到這了,更多相關selenium環(huán)境搭建內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
conda虛擬環(huán)境使用pip下載包到當前環(huán)境的兩種方法
conda管理包很方便,但并不是所有包都有最新的conda版本,所以仍需要使用conda中的pip來安裝包,下面這篇文章主要給大家介紹了關于conda虛擬環(huán)境使用pip下載包到當前環(huán)境的兩種方法,需要的朋友可以參考下2022-08-08
Pandas數(shù)據分析之pandas數(shù)據透視表和交叉表
這篇文章主要介紹了Pandas數(shù)據分析之pandas數(shù)據透視表和交叉表,pandas對數(shù)據框也可以像excel一樣進行數(shù)據透視表整合之類的操作。主要是針對分類數(shù)據進行操作,還可以計算數(shù)值型數(shù)據,去滿足復雜的分類數(shù)據整理的邏輯2022-08-08

