日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Python中Selenium庫使用教程詳解

瀏覽:85日期:2022-07-16 14:54:56

selenium介紹

selenium最初是一個自動化測試工具,而爬蟲中使用它主要是為了解決requests無法直接執(zhí)行JavaScript代碼的問題 selenium本質是通過驅動瀏覽器,完全模擬瀏覽器的操作,比如跳轉、輸入、點擊、下拉等,來拿到網(wǎng)頁渲染之后的結果,可支持多種瀏覽器

中文參考文檔

官網(wǎng)

環(huán)境安裝

下載安裝selenium

pip install selenium -i https://mirrors.aliyun.com/pypi/simple/

谷歌瀏覽器驅動程序下載地址:

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

使用示例

from selenium import webdriverfrom time import sleep# 實例化一款瀏覽器bor = webdriver.Chrome(executable_path=’chromedriver.exe’)# 對指定的url發(fā)起請求bor.get(’https://www.jd.com/’)sleep(1)# 進行標簽定位search_input = bor.find_element_by_id(’key’)# 向搜索框中錄入關鍵詞search_input.send_keys('mac pro')# 點擊搜索按鈕btn = bor.find_element_by_xpath(’//*[@id='search']/div/div[2]/button’)btn.click()sleep(2)# 執(zhí)行js,讓滾輪向下滾動bor.execute_script(’window.scrollTo(0, document.body.scrollHeight)’)sleep(2)page_text = bor.page_sourceprint(page_text)bor.quit()

瀏覽器創(chuàng)建

Selenium支持非常多的瀏覽器,如Chrome、Firefox、Edge等,還有Android、BlackBerry等手機端的瀏覽器。另外,也支持無界面瀏覽器PhantomJS。

from selenium import webdriver browser = webdriver.Chrome()browser = webdriver.Firefox()browser = webdriver.Edge()browser = webdriver.PhantomJS()browser = webdriver.Safari()

元素定位

webdriver 提供了一系列的元素定位方法,常用的有以下幾種:

定位一個元素 定位多個元素 含義 find_element_by_id find_elements_by_id 通過元素id定位 find_element_by_name find_elements_by_name 通過元素name定位 find_element_by_xpath find_elements_by_xpath 通過xpath表達式定位 find_element_by_link_text find_elements_by_link_tex 通過完整超鏈接定位 find_element_by_partial_link_text find_elements_by_partial_link_text 通過部分鏈接定位 find_element_by_tag_name find_elements_by_tag_name 通過標簽定位 find_element_by_class_name find_elements_by_class_name 通過類名進行定位 find_elements_by_css_selector find_elements_by_css_selector 通過css選擇器進行定位

注意:

1、find_element_by_xxx找的是第一個符合條件的標簽,find_elements_by_xxx找的是所有符合條件的標簽。

2、根據(jù)ID、CSS選擇器和XPath獲取,它們返回的結果完全一致。

3、另外,Selenium還提供了通用方法find_element(),它需要傳入兩個參數(shù):查找方式By和值。實際上,它就是find_element_by_id()這種方法的通用函數(shù)版本,比如find_element_by_id(id)就等價于find_element(By.ID, id),二者得到的結果完全一致。

實例演示

假如有一個web頁面,通過前端工具查看到一個元素的屬性是這樣的。

<html> <head> <body link='#0000cc'> <a href='http://www.b3g6.com/' rel='external nofollow' onmousedown='return c({’fm’:’tab’,’tab’:’logo’})'> <form name='f' action='/s'> <span ></span> <input 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定位,xpath定位有N種寫法,這里列幾個常用寫法:

dr.find_element_by_xpath('//*[@]')dr.find_element_by_xpath('//*[@name=’wd’]')dr.find_element_by_xpath('//input[@]')dr.find_element_by_xpath('/html/body/form/span/input')dr.find_element_by_xpath('//span[@]/input')dr.find_element_by_xpath('//form[@]/span/input')dr.find_element_by_xpath('//input[@ and @name=’wd’]')

通過css定位,css定位有N種寫法,這里列幾個常用寫法:

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')

假如頁面上有如下一組文本鏈接

<a rel='external nofollow' name='tj_trnews'>新聞</a><a rel='external nofollow' name='tj_trhao123'>hao123</a>

通過link text定位:

dr.find_element_by_link_text('新聞')dr.find_element_by_link_text('hao123')

通過partial link text定位:

dr.find_element_by_partial_link_text('新')dr.find_element_by_partial_link_text('hao')dr.find_element_by_partial_link_text('123')

控制瀏覽器

常用的控制瀏覽器操作的一些方法

方法 說明 set_window_size() 設置瀏覽器的大小 back() 控制瀏覽器后退 forward() 控制瀏覽器前進 refresh() 刷新當前頁面 clear() 清除文本 send_keys (value) 模擬按鍵輸入 click() 單擊元素 submit() 用于提交表單 get_attribute(name) 獲取元素屬性值 is_displayed() 設置該元素是否用戶可見 size 返回元素的尺寸 text 獲取元素的文本

📝 示例

from selenium import webdriverfrom time import sleep#1.創(chuàng)建Chrome瀏覽器對象,這會在電腦上在打開一個瀏覽器窗口browser = webdriver.Chrome(executable_path= 'chromedriver.exe')#2.通過瀏覽器向服務器發(fā)送URL請求browser.get('https://www.baidu.com/')sleep(3)#3.刷新瀏覽器browser.refresh()#4.設置瀏覽器的大小browser.set_window_size(1400,800)#5.設置鏈接內容element=browser.find_element_by_link_text('新聞')element.click()

調用JavaScript代碼

雖然WebDriver提供了操作瀏覽器的前進和后退方法,但對于瀏覽器滾動條并沒有提供相應的操作方法。在這種情況下,就可以借助JavaScript來控制瀏覽器的滾動條。WebDriver提供了execute_script()方法來執(zhí)行JavaScript代碼。

用于調整瀏覽器滾動條位置的JavaScript代碼如下:

<!-- window.scrollTo(左邊距,上邊距); -->window.scrollTo(0,450);

from selenium import webdriverfrom time import sleep# 1.訪問百度drive = webdriver.Chrome(executable_path=’chromedriver.exe’)drive.get(’https://www.baidu.com’)# 2.搜索drive.find_element_by_id(’kw’).send_keys(’python’)drive.find_element_by_id(’su’).click()# 3.休眠2s,獲取服務器的響應內容sleep(2)# 4.通過javascript設置瀏覽器窗口的滾動條位置drive.execute_script(’window.scrollTo(0, 500)’)# drive.execute_script(’window.scrollTo(0, document.body.scrollHeight)’) #滑到最底部sleep(2)drive.close()

獲取頁面源碼數(shù)據(jù)

通過page_source屬性可以獲取網(wǎng)頁的源代碼,接著就可以使用解析庫(如正則表達式、Beautiful Soup、pyquery等)來提取信息了。

📝 示例

from selenium import webdriverfrom time import sleep# 1.訪問百度drive = webdriver.Chrome(executable_path=’chromedriver.exe’)drive.get(’https://www.baidu.com’)# 2.搜索drive.find_element_by_id(’kw’).send_keys(’python’)drive.find_element_by_id(’su’).click()# 3.休眠2s,獲取服務器的響應內容sleep(2)# 4.獲取頁面源碼數(shù)據(jù)text = drive.page_sourceprint(text)drive.close()

cookie操作

有時候我們需要驗證瀏覽器中cookie是否正確,因為基于真實cookie的測試是無法通過白盒和集成測試進行的。WebDriver提供了操作Cookie的相關方法,可以讀取、添加和刪除cookie信息。

WebDriver操作cookie的方法:

方法 說明 get_cookies() 獲得所有cookie信息 get_cookie(name) 返回字典的key為“name”的cookie信息 add_cookie(cookie_dict) 添加cookie。“cookie_dict”指字典對象,必須有name 和value 值 delete_cookie(name,optionsString) 刪除cookie信息。“name”是要刪除的cookie的名稱,“optionsString”是該cookie的選項,目前支持的選項包括“路徑”,“域” delete_all_cookies() 刪除所有cookie信息

📝 示例

from selenium import webdriverdrive = webdriver.Chrome(executable_path=’chromedriver.exe’)drive.get(’https://www.cnblogs.com/’)# 1.打印cookie信息print(drive.get_cookies())# 2.添加cookie信息dic = {’name’:’name’, ’value’:’python’}drive.add_cookie(dic)print(drive.get_cookies())# 3.遍歷打印cookie信息for cookie in drive.get_cookies(): print(f'{cookie[’name’]}---f{cookie[’value’]}n')drive.close()

谷歌無頭瀏覽器

PhantomJs已停止維護更新,這里使用谷歌的無頭瀏覽器,是一款無界面的谷歌瀏覽器。很多時候我們爬取數(shù)據(jù),并不想打開一個瀏覽器窗口進行操作,我們只需要獲取數(shù)據(jù)或者拿到cookie然后進行操作。

📝 示例

from selenium import webdriverfrom selenium.webdriver.chrome.options import Options# 1.創(chuàng)建一個參數(shù)對象,用來控制chrome以無界面模式打開chrome_options = Options()chrome_options.add_argument(’--headless’)chrome_options.add_argument(’--disable-gpu’)# 2.創(chuàng)建瀏覽器對象drive = webdriver.Chrome(executable_path=’chromedriver.exe’, chrome_options=chrome_options)# 3.發(fā)起請求獲取數(shù)據(jù)drive.get(’https://www.cnblogs.com/’)page_text = drive.page_sourceprint(page_text)drive.close()

selenium規(guī)避被檢測識別

現(xiàn)在不少大網(wǎng)站有對selenium采取了監(jiān)測機制。比如正常情況下我們用瀏覽器訪問淘寶等網(wǎng)站的 window.navigator.webdriver的值為 undefined。而使用selenium訪問則該值為true。那么如何解決這個問題呢?

只需要設置Chromedriver的啟動參數(shù)即可解決問題。在啟動Chromedriver之前,為Chrome開啟實驗性功能參數(shù)excludeSwitches,它的值為[’enable-automation’],完整代碼如下:

📝 示例

from selenium import webdriverfrom selenium.webdriver import ChromeOptions# 1.實例化一個ChromeOptions對象option = ChromeOptions()option.add_experimental_option(’excludeSwitches’, [’enable-automation’])# 2.將ChromeOptions實例化的對象option作為參數(shù)傳給Crhome對象driver = webdriver.Chrome(executable_path=’chromedriver.exe’, options=option)# 3.發(fā)起請求driver.get(’https://www.taobao.com/’)

到此這篇關于Python中Selenium庫使用教程詳解的文章就介紹到這了,更多相關Python Selenium庫使用內容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产极品一区| 日韩在线不卡| 亚洲精品欧洲| 久久理论电影| 成人羞羞视频在线看网址| 午夜精品福利影院| 99亚洲视频| 国产一区亚洲| 欧美亚洲日本精品| 国产精品成人自拍| 99热精品久久| av日韩中文| 国产精品中文字幕制服诱惑| 三级一区在线视频先锋| 欧美不卡高清| 亚洲香蕉网站| 国产日产精品_国产精品毛片 | 亚洲最大av| 婷婷成人基地| 久久久久国产精品一区二区| 加勒比视频一区| 精品久久97| 岛国av免费在线观看| 97精品视频在线看| 欧美成人a交片免费看| 久久精品国语| 悠悠资源网久久精品| 久久丁香四色| 国产精品jk白丝蜜臀av小说| 欧美日一区二区三区在线观看国产免 | 99视频精品| 麻豆视频在线看| 国产精品久久久久av电视剧| 成人久久一区| 蜜桃一区二区三区在线观看| 亚洲精选久久| 国产精品黄网站| 久久久久久一区二区| 久久婷婷一区| 亚洲精品在线a| 国产亚洲精品精品国产亚洲综合| 欧美日韩亚洲一区在线观看| 久久香蕉网站| 欧美日韩精品一区二区视频| 中文字幕一区二区三区四区久久| 日韩激情av在线| av在线日韩| 久久精品 人人爱| 91亚洲国产| 国产精品777777在线播放 | 亚洲精品99| 欧美日韩一区自拍| 999久久久亚洲| 久久激情五月婷婷| 国产91在线播放精品| 欧美日韩中文一区二区| 国产精品久久久亚洲一区| 黄色日韩精品| 日产精品一区二区| 中文字幕日韩亚洲| 亚洲h色精品| 精品美女在线视频| 人人精品人人爱| 久久国产主播| 精品不卡一区| 国产精品夜夜夜| 日韩一二三区在线观看| 亚洲精品护士| 国产精品专区免费| 欧美网站在线| 日韩深夜视频| 在线看片福利| 福利欧美精品在线| 欧美天堂一区二区| 正在播放日韩精品| 精品国产一区二区三区噜噜噜| 日韩精品a在线观看91| 一区二区电影在线观看| 色一区二区三区四区| 国产精品毛片久久久| 亚洲一区二区三区高清| 欧美~级网站不卡| 黑人精品一区| 久久精品国产99国产| 日日夜夜免费精品视频| 久久午夜影视| 另类国产ts人妖高潮视频| 欧美日韩免费观看一区=区三区 | 精品国产欧美日韩一区二区三区| 国产精品亚洲欧美日韩一区在线| 国产精品亚洲综合色区韩国| 国产精品调教视频| 久久av日韩| 中文字幕色婷婷在线视频| 久久精品系列| 日韩精品一区二区三区免费观影| 日韩三区在线| 亚洲免费中文| 欧美综合社区国产| av在线最新| 亚洲深爱激情| 欧美特黄一区| 欧美精品影院| 91精品一区国产高清在线gif| 精品一区二区三区四区五区| 久久精品国产99国产| 日韩一区二区中文| 亚洲日产av中文字幕| 国产日产一区| 高清一区二区三区av| 国产一区二区久久久久| 国产视频一区免费看| 9999国产精品| 国产欧美88| 欧美一区=区| 欧美日韩免费观看视频| 97久久亚洲| 9色国产精品| 日韩毛片在线| 日韩1区在线| 免费在线日韩av| 欧美日韩中文| 欧美天堂在线| 日韩黄色在线观看| 五月天久久久| 成人日韩精品| 日韩精品中文字幕一区二区| 妖精视频成人观看www| 日韩成人高清| 香蕉成人av| 日本а中文在线天堂| 国内精品伊人| 91精品美女| 国产精选久久| 国产欧美另类| 精品久久精品| 国产精品久久久久久久免费观看 | 色婷婷精品视频| 久久精品一区| 麻豆精品少妇| 麻豆精品蜜桃视频网站| 韩日一区二区| 亚洲91精品| 蜜桃久久久久久| 欧美日一区二区三区在线观看国产免 | 国产精品久久观看| 视频在线不卡免费观看| 日韩中文字幕视频网| 日本综合精品一区| 免费在线成人| 桃色一区二区| 蜜臀av一区二区三区| 国产日产精品_国产精品毛片| 国产一区二区三区国产精品| 桃色av一区二区| 三级亚洲高清视频| 美女精品视频在线| 国产一区二区视频在线看| 日韩不卡在线| 日韩高清一区在线| 欧美国产免费| 免费观看不卡av| 亚洲日韩中文字幕一区| 国产一区丝袜| 视频一区欧美精品| 婷婷精品久久久久久久久久不卡| 精品成人免费一区二区在线播放| 亚洲激情国产| 欧美激情91| 9国产精品视频| 国产一区一一区高清不卡| 午夜欧美精品| 国产精品a久久久久| 99国产精品| 国产一区二区三区久久| 亚洲色图网站| 99久久www免费| 国产美女久久| 中文字幕av一区二区三区四区| 精品国产黄a∨片高清在线| 亚洲影视一区| 日韩午夜免费| 国精品一区二区| 91亚洲国产高清| 麻豆国产精品777777在线| 欧美一区成人| 日韩精品免费观看视频| 先锋影音久久久| 在线亚洲观看| 亚洲在线成人| 午夜在线一区| 美日韩一区二区三区| 蜜臀久久久久久久| 欧美天堂亚洲电影院在线观看| 久久久国产精品一区二区中文| 超碰成人av| 特黄特色欧美大片| av资源中文在线| 国产精品xxxav免费视频| 久久丁香四色|