




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第教你快速上手Selenium爬蟲,萬物皆可爬目錄一、基本使用二、查找節(jié)點2.1查找單個節(jié)點2.2查找多個節(jié)點三、節(jié)點交互四、動作鏈五、執(zhí)行JavaScript代碼六、獲取節(jié)點信息七、管理Cookies八、改變節(jié)點屬性的值
一、基本使用
selenium的基本使用步驟:
打開瀏覽器;
獲取瀏覽器頁面的特定內(nèi)容;
控制瀏覽器頁面上的控件,如向一個文本框中輸入一個字符串;
關(guān)閉瀏覽器。
示例:
fromseleniumimportwebdriver
frommon.keysimportKeys
frommon.byimportBy
fromselenium.webdriver.support.waitimportWebDriverWait
fromselenium.webdriver.supportimportexpected_conditionsasec
browser=webdriver.Chrome()
browser.get('')
input_t=browser.find_element_by_id('key')
input_t.send_keys('python爬蟲')
input_t.send_keys(Keys.ENTER)#模擬按下Enter鍵位
wait=WebDriverWait(browser,4)#設(shè)置最長等待時間4秒
wait.until(ec.presence_of_all_elements_located((By.ID,'J_goodsList')))
print(browser.title)#顯示搜索頁面的標題
print(browser.current_url)
print(browser.page_source)
browser.close()
exceptExceptionase:
print(e)
browser.close()
二、查找節(jié)點
2.1查找單個節(jié)點
html源碼如下:
!DOCTYPEhtml
htmllang="en"
head
metacharset="UTF-8"
title表單/title
/head
body
script
functiononclick_form(){
alert(document.getElementById('name').value+
document.getElementById('age').value+
document.getElementsByName('country')[0].value+
document.getElementsByClassName('myclass')[0].value)
/script
姓名:inputid="name"p/p
年齡:inputid="age"p/p
國家:inputname="country"p/p
收入:inputp/p
button提交/button
/body
/html
樣式如下圖所示:
python代碼自動填充上圖中的表單:
fromseleniumimportwebdriver
frommon.byimportBy
#不支持本地網(wǎng)頁
browser=webdriver.Chrome()
#這里我是用flask自己搭建的一個服務(wù)訪問該頁面即可打開demo.html
browser.get(':5000/')
input_t=browser.find_element_by_id('name')#通過id屬性查找姓名input節(jié)點
input_t.send_keys('Amo')#自動輸入
input_t=browser.find_element_by_id('age')
input_t.send_keys('18')
input_t=browser.find_element_by_name('country')#通過name屬性查找國家input節(jié)點
input_t.send_keys('中國')
#通過class屬性查找收入input節(jié)點
input_t=browser.find_element_by_class_name('myclass')
input_t.send_keys('1850')
#或下面的代碼
input_t=browser.find_element(By.CLASS_NAME,'myclass')
#要想覆蓋前面的輸入,需要清空input節(jié)點,否則會在input節(jié)點原來的內(nèi)容后面追加新內(nèi)容
input_t.clear()
input_t.send_keys('3500')
exceptExceptionase:
print(e)
browser.close()
效果如下圖所示:
2.2查找多個節(jié)點
示例代碼如下:
fromseleniumimportwebdriver
frommon.byimportBy
#不支持本地網(wǎng)頁
browser=webdriver.Chrome()
browser.get('')#打開京東
#根據(jù)節(jié)點名查找所有名為li的節(jié)點
li_list=browser.find_elements_by_tag_name('li')
#輸出節(jié)點本身
print(li_list)
print(len(li_list))
print(li_list[0].text)
ul=browser.find_elements(By.TAG_NAME,'ul')
print(ul)
print(ul[0].text)
browser.close()
exceptExceptionase:
print(e)
browser.close()
三、節(jié)點交互
使用selenium通過模擬瀏覽器單擊動作循環(huán)單擊頁面上的6個按鈕,單擊每個按鈕后,按鈕下方的div就會按照按鈕的背景顏色設(shè)置div的背景色。
demo1.html靜態(tài)頁面代碼如下:
!DOCTYPEhtml
htmllang="en"
head
metacharset="UTF-8"
title彩色按鈕/title
/head
body
script
functiononclick_color(e){
document.getElementById("bgcolor").style.background=e.style.background
/script
button按鈕1/button
button按鈕2/button
button按鈕3/button
button按鈕4/button
button按鈕5/button
button按鈕6/button
p/p
divid="bgcolor"
/div
/body
/html
然后使用Python代碼模擬瀏覽器的單擊動作自動單擊頁面上的6個按鈕。P
ython代碼如下所示:
fromseleniumimportwebdriver
importtime
browser=webdriver.Chrome()
browser.get(':5000/')
buttons=browser.find_elements_by_class_name('mybutton')
i=0
whileTrue:
buttons[i].click()
time.sleep(1)
i+=1
ifi==len(buttons):
i=0
exceptExceptionase:
print(e)
browser.close()
四、動作鏈
使用selenium動作鏈的move_to_element方法模擬鼠標移動的動作,自動顯示京東商城首頁左側(cè)的每個二級導航菜單。
示例代碼如下:
fromseleniumimportwebdriver
fromselenium.webdriverimportActionChains
importtime
browser=webdriver.Chrome()
browser.get('')
actions=ActionChains(browser)
li_list=browser.find_elements_by_css_selector(".cate_menu_item")
forliinli_list:
actions.move_to_element(li).perform()
time.sleep(1)
exceptExceptionase:
print(e)
browser.close()
使用selenium動作鏈的drag_and_drop方法將一個節(jié)點拖動到另外一個節(jié)點上。
示例代碼如下:
fromseleniumimportwebdriver
fromselenium.webdriverimportActionChains
browser=webdriver.Chrome()
browser.get('/try/try.phpfilename=jqueryui-api-droppable')
browser.switch_to.frame('iframeResult')
source=browser.find_element_by_css_selector('#draggable')
target=browser.find_element_by_css_selector('#droppable')
actions=ActionChains(browser)
actions.drag_and_drop(source,target)
actions.perform()
exceptExceptionase:
print(e)
browser.close()
五、執(zhí)行JavaScript代碼
使用selenium的execute_script方法讓京東商城首頁滾動到最低端,然后彈出一個對話框。示
例代碼如下:
fromseleniumimportwebdriver
browser=webdriver.Chrome()
browser.get('')
browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')
browser.execute_async_script('alert("已經(jīng)到達頁面底端")')
六、獲取節(jié)點信息
使用selenium的API獲取京東商城首頁HTML代碼中id為navitems-group1的ul節(jié)點的相關(guān)信息以及ul節(jié)點中l(wèi)i子節(jié)點的相關(guān)信息。
示例代碼如下:
fromseleniumimportwebdriver
options=webdriver.ChromeOptions()
options.add_argument('headless')
browser=webdriver.Chrome(chrome_options=options)
#browser=webdriver.PhantomJS('./webdriver/phantomjs')
browser.get('')
ul=browser.find_element_by_id("navitems-group1")
print(ul.text)
print('id','=',ul.id)#內(nèi)部id,不是節(jié)點id屬性值
print('location','=',ul.location)
print('tag_name','=',ul.tag_name)
print('size','=',ul.size)
li_list=ul.find_elements_by_tag_name("li")
forliinli_list:
print(type(li))
#屬性沒找到,返回None
print('',li.text,'','class'))
a=li.find_element_by_tag_name('a')
print('href','=',a.get_attribute('href'))
browser.close()
執(zhí)行結(jié)果如下:
秒殺
優(yōu)惠券
PLUS會員
品牌閃購
id=6bb622fb-df60-4619-a373-b55e44dc27af
location={'x':203,'y':131}
tag_name=ul
size={'height':40,'width':294}
class'selenium.webdriver.remote.webelement.WebElement'
秒殺>
href=/
class'selenium.webdriver.remote.webelement.WebElement'
優(yōu)惠券>
href=/
class'selenium.webdriver.remote.webelement.WebElement'
PLUS會員>
href=/indexflow_system=appiconflow_entrance=appicon11flow_channel=pc
class'selenium.webdriver.remote.webelement.WebElement'
品牌閃購>
href=/
七、管理Cookies
使用seleniumAPI獲取cookie列表,并添加新的cookie,以及刪除所有的cookie。
示例代碼如下:
fromseleniumimportwebdriver
browser=webdriver.Chrome()
browser.get('')
print(browser.get_cookies())
browser.add_cookie({'name':'name',
'value':'jd','domain':''})
print(browser.get_cookies())
browser.delete_all_cookies()
print(browser.get_cookies())#大部分刪除了,可能還剩下一些
八、改變節(jié)點屬性的值
通過javascript代碼改變百度搜索按鈕的位置,讓這個按鈕在多個位置之間移動,時間間隔是2秒。
示例代碼如下:
fromseleniumimportwebdriver
importtime
driver=webdriver.Chrome()
driver.get("")
search_button=driver.find_element_by_id("su")#百度搜索按鈕
#arguments[0]對應(yīng)的是第一個參數(shù),可以理解為python里的%s傳參,與之類似
x_positions=[50,90,130,170]
y_positions=[100,120,160,90]
foriinrange(len(x_positions)):
js='''
arguments[0].style.position="absolute";
arguments[0].st
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)股東出資合同范例
- 個人行業(yè)合同范例
- 借條樣本農(nóng)民合同樣本
- 個人收據(jù)合同范例
- 個人門市轉(zhuǎn)讓合同范例
- 個人借貸給公司合同范例
- pccp購銷合同范例
- 企業(yè)工業(yè)廠房出租合同范例
- ppr管購銷合同范例
- 公墓搬遷合同范例
- 郭秀蘭:大學語文說課程
- 2023武漢四調(diào)數(shù)學試卷及答案(Word精校版)
- 2021年全國質(zhì)量獎現(xiàn)場匯報材料-基礎(chǔ)設(shè)施、設(shè)備及設(shè)施管理過程課件
- 技能大師工作室成員協(xié)議范本書
- PICC專科護士進修學習匯報
- 防爆電氣失爆判別標準和常見失爆現(xiàn)象匯總
- 10kV高壓開關(guān)柜整定計算書
- 工廠如何消除靜電與防止靜電實踐篇
- 我學會了洗碗作文
- 武漢市住宅專項維修資金使用申請表
- 霍尼韋爾x溫控儀中文說明書——有程序設(shè)定篇
評論
0/150
提交評論