大數(shù)據(jù)學(xué)習(xí)筆記之爬蟲系列(3)----selenium庫(kù)的用法

selenium的安裝

win+R 輸入cmd打開命令行:

pip install selenium

selenium的簡(jiǎn)介

申明瀏覽器的對(duì)象

from selenium import webdriver
browser = webdriver.Chrome ()
browser = webdriver.firefox()
browser = webdriver.Android()
browser = webdriver.Edge()

對(duì)應(yīng)的瀏覽器都需要下載對(duì)應(yīng)版本的驅(qū)動(dòng)束倍,并配置環(huán)境變量。

訪問(wèn)網(wǎng)頁(yè)

browser = webdriver.Chrome ()
browser.get("https://www.taobao.com")
print(browser.page_source)
browser.close()

運(yùn)行程序倔叼,得到如下:


訪問(wèn)淘寶頁(yè)面.png

查找元素

查找單個(gè)元素

browser = webdriver.Chrome ()
browser.get("https://www.taobao.com")
input_first = browser.find_element_by_id('q')
input_second = browser.find_element_by_css_selector('#q')
input_third = browser.find_element_by_xpath('//*[@id="q"]')
print(input_first,input_second,input_third)
browser.close()

上面代碼中的browser.find_element_by_id肛度、browser.find_element_by_css_selector郑现、browser.find_element_by_xpath實(shí)質(zhì)上是找的同一個(gè)元素夕春,只是查找的方式不同未荒。
所以,最終答應(yīng)出來(lái)的信息應(yīng)該是完全一樣的及志,如下圖:


查找同一個(gè)元素.png

查找多個(gè)元素

browser = webdriver.Chrome ()
browser.get("https://www.taobao.com")
lis = browser.find_elements_by_css_selector(".service-bd li")
print(lis)
browser.close()

其實(shí)片排,查找多個(gè)元素就是由查找單個(gè)原色的find_element變成了find_elements.用法和查找單個(gè)元素基本一致 。


查找多個(gè)元素.png

另外一個(gè)用法是其“抽象方法”速侈,具體代碼示例如下:

browser = webdriver.Chrome ()
browser.get("https://www.taobao.com")
lis = browser.find_elements(By.CSS_SELECTOR,".service-bd li")
print(lis)
browser.close()

運(yùn)行結(jié)果和上訴一致:


查找多個(gè)元素之抽象方法.png

元素交互操作

對(duì)獲取的元素進(jìn)行交互操作

from selenium import webdriver
import time

browser = webdriver.Chrome()
browser.get("http://www.taobao.com")
input = browser.find_element_by_id('q')
input.send_keys('IPhone')
time.sleep(1)
input.clear()
input.send_keys("IPad")
button = browser.find_element_by_class_name('btn-search')
button.click()

上訴代碼主要是打開淘寶網(wǎng)划纽,然后現(xiàn)在搜索框里面輸入“IPhone”,然后1s之后刪除锌畸,再次輸入“IPad”,點(diǎn)擊【搜索按鈕】靖避。

交互操作

可以將網(wǎng)頁(yè)中的一些元素進(jìn)行拖拽潭枣,需要引入ActionChains:

from selenium.webdriver import ActionChains
actions = ActionChains(source,target)
actions.perform()

執(zhí)行JavaScript

browser = webdriver.Chrome()
browser.get("http://www.zhihu.com/explore")
browser.execute_script('Windows.scrollTo(0,document.body.scrollHeight)')
browser.execute_script('alert("To Buttom")')

打開知乎比默,并下滑到頁(yè)面的最底端。

獲取元素信息

browser = webdriver.Chrome()
browser.get("http://www.zhihu.com/explore")
logo = browser.find_element_by_id('zh-top-link-logo')
print(logo)
print(logo.get_attribute('class'))

上訴代碼是進(jìn)入知乎的首頁(yè)盆犁,并且找到知乎的logo信息命咐,然后將其class屬性打印出來(lái)。結(jié)果如下:


關(guān)于知乎的logo.png

獲取屬性

上訴最后一行代碼即為獲取文本值

獲取文本值

獲取知乎【提問(wèn)】的文本值谐岁,代碼如下:

browser = webdriver.Chrome()
browser.get("http://www.zhihu.com/explore")
input = browser.find_element_by_id('zu-top-add-question')
print(input.text)

運(yùn)行的結(jié)果如下:


獲取文本.png

上圖可知醋奠,程序成功的將制定的按鈕的文本信息提取出來(lái)。

獲取ID伊佃、位置窜司、標(biāo)簽名、大小

對(duì)應(yīng)的代碼如下:

browser = webdriver.Chrome()
browser.get("http://www.zhihu.com/explore")
input = browser.find_element_by_id('zu-top-add-question')
print(input.id)
print(input.size)
print(input.location)
print(input.tag_name)

程序運(yùn)行得到以下的結(jié)果:


獲取ID&SIZE&LOCATION&TAG_NAME.png

Frame

frame的本意是“架構(gòu)航揉,框架”塞祈,一個(gè)網(wǎng)頁(yè)可以理解為由多個(gè)frame組成,且這些frame之間有父子繼承關(guān)系帅涂。


frame.png

當(dāng)元素所處的frame不確定時(shí)议薪,需要用相關(guān)的switch_to進(jìn)行相關(guān)的邏輯選擇。

等待

隱式等待

隱式等待的默認(rèn)時(shí)間是0媳友,就是在指定的時(shí)間內(nèi)找不到需要找的元素則會(huì)拋出相關(guān)的異常信息斯议。

browser = webdriver.Chrome()
browser.implicitly_wait(10)
browser.get("http://www.zhihu.com/explore")
input = browser.find_element_by_id('zu-top-add-question')
print(input.text)

一般來(lái)說(shuō),只有在網(wǎng)速很慢的情況下有必要加載這個(gè)等待的時(shí)間設(shè)置醇锚。

顯示等待

顯式等待比較常用哼御,意思是按照編程的邏輯去查找一些元素,或者屬性搂抒,在指定的時(shí)間過(guò)去之后不能查找到艇搀,則拋出異常。

browser = webdriver.Chrome()
browser.get("http://www.zhihu.com/explore")
wait = WebDriverWait(browser,10)
input = wait.until(EC.presence_of_element_located((By.ID,'q')))
button = wait.until(EC.element_to_be_clickable(By.CSS_SELECTOR,'.btn-search'))
print(input,button)
顯示等待.png

瀏覽器的前進(jìn)和后退

browser.back()
browser.forward()

Cookies

將筆記本里知乎里面所有的cookies打印出來(lái),然后全部刪除

browser = webdriver.Chrome()
browser.get("http://www.zhihu.com/explore")
print(browser.get_cookies())
browser.delete_all_cookies()
print(browser.get_cookies())

程序運(yùn)行的結(jié)果是:


cookies操作.png

選項(xiàng)卡的管理

實(shí)質(zhì)上還是進(jìn)行相關(guān)的script操作:

browser.execute_script('window.open()')

往期好文:
大數(shù)據(jù)學(xué)習(xí)筆記之爬蟲系列(2)----爬蟲常用庫(kù)
大數(shù)據(jù)學(xué)習(xí)筆記之爬蟲系列(1)----爬蟲簡(jiǎn)介

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末求晶,一起剝皮案震驚了整個(gè)濱河市焰雕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌芳杏,老刑警劉巖矩屁,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異爵赵,居然都是意外死亡吝秕,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門空幻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)烁峭,“玉大人,你說(shuō)我怎么就攤上這事≡加簦” “怎么了缩挑?”我有些...
    開封第一講書人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)鬓梅。 經(jīng)常有香客問(wèn)我供置,道長(zhǎng),這世上最難降的妖魔是什么绽快? 我笑而不...
    開封第一講書人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任芥丧,我火速辦了婚禮,結(jié)果婚禮上坊罢,老公的妹妹穿的比我還像新娘续担。我一直安慰自己,他們只是感情好艘绍,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開白布赤拒。 她就那樣靜靜地躺著,像睡著了一般诱鞠。 火紅的嫁衣襯著肌膚如雪挎挖。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評(píng)論 1 305
  • 那天航夺,我揣著相機(jī)與錄音蕉朵,去河邊找鬼。 笑死阳掐,一個(gè)胖子當(dāng)著我的面吹牛始衅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播缭保,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼汛闸,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了艺骂?” 一聲冷哼從身側(cè)響起诸老,我...
    開封第一講書人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎钳恕,沒(méi)想到半個(gè)月后别伏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡忧额,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年厘肮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片睦番。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡类茂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情大咱,我是刑警寧澤恬涧,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站碴巾,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏丑搔。R本人自食惡果不足惜厦瓢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望啤月。 院中可真熱鬧煮仇,春花似錦、人聲如沸谎仲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)郑诺。三九已至夹姥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間辙诞,已是汗流浹背辙售。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留飞涂,地道東北人旦部。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像较店,于是被迫代替她去往敵國(guó)和親士八。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • selenium用法詳解 selenium主要是用來(lái)做自動(dòng)化測(cè)試梁呈,支持多種瀏覽器婚度,爬蟲中主要用來(lái)解決JavaScr...
    陳_CHEN_陳閱讀 3,897評(píng)論 1 5
  • Selenium是一款強(qiáng)大的基于瀏覽器的開源自動(dòng)化測(cè)試工具,最初由 Jason Huggins 于 2004 年在...
    FifiZhuang閱讀 7,615評(píng)論 5 71
  • 與其他NoSql數(shù)據(jù)庫(kù)(例如Memecache)不同,Jedis并沒(méi)有提供默認(rèn)的序列化工具捧杉,這樣開發(fā)者需要自己引入...
    volkin閱讀 768評(píng)論 0 0
  • 2018年3月4日味抖,星期日评甜,好天氣 今天,白天仔涩,我沒(méi)出門忍坷。 上午刷鞋子,衣服。下午看電影佩研,『阿甘正傳』『肖申克的救...
    賀琴說(shuō)閱讀 194評(píng)論 0 1
  • 親愛(ài)的狐貍精兄弟: 我是兔寶寶柑肴,趁還能想起來(lái),先記錄下關(guān)于我和你的故事旬薯。12年在告別了一段不美好的戀愛(ài)之后晰骑,...
    兔寶寶66閱讀 400評(píng)論 0 1