利用python爬虫(part17)--初识selenium
學習筆記
文章目錄
- selenium
- phantomjs與chromedriver
- 瀏覽器對象browser
selenium
selenium為Web自動化測試工具,可運行在瀏覽器,根據指令操作瀏覽器,如點擊、下拉等。如果我們將selenim和Chrome/phantomjs瀏覽器結合,則功能會非常強大,我們幾乎可以爬取想爬取的任何東西。
- 安裝
注意 ,selenium安裝比較容易報超時錯誤:ReadTimeoutError,聽說是由于selenium服務器在美國,所以連接很差。網上有挺多辦法的,但是我比較懶,就執行了7次這個代碼,才把它給下載下來。
報錯信息:
phantomjs與chromedriver
phantomjs為無界面瀏覽器(又稱無頭瀏覽器),可以在內存中進行頁面加載,提高加載效率。chromedriver可以配合selenium庫使用,只有安裝chromedriver,才能驅動Chrome瀏覽器完成相應的操作。
- 下載(phantomjs、chromedriver)
在網上查找對應版本的phantomjs和chromedriver,并將其exe程序放在python安裝目錄的Scripts文件夾下(添加到系統環境變量)。
chromedriver下載地址:https://npm.taobao.org/mirrors/chromedriver/
phantomjs下載地址:https://npm.taobao.org/dist/phantomjs/
注意!我們在下載chromedriver時,不能隨便下載,應該根據Chrome瀏覽器的版本進行下載。比如說,我的版本Chrome瀏覽器為81.0.4044,那我就需要下載與這個版本接近的chromedriver,比如這里我下載的是chromedriver_win32.zip 。
- 舉個例子1
我們利用selenium和chromedriver打開chrome瀏覽器:
from selenium import webdriver browser = webdriver.Chrome()被打開的瀏覽器界面:
- 舉個例子2
我們利用selenium和chromedriver打開百度:
# -*- coding: utf-8 -*-from selenium import webdriver#創建瀏覽器對象(打開瀏覽器) browser = webdriver.Chrome() #當我們沒有將chromedrive添加到環境變量中 #那么我們需要指定參數excutable_path='chromedrive的路徑'#在地址欄中輸入百度URL browser.get("http://www.baidu.com/")被打開的瀏覽器界面:
- 舉個例子3
利用selenium和chromedriver打開百度,在內存中截圖,并關閉瀏覽器:
# -*- coding: utf-8 -*- from selenium import webdriver#創建瀏覽器對象(打開瀏覽器) browser = webdriver.Chrome() #當我們沒有將chromedrive添加到環境變量中 #那么我們需要指定參數excutable_path='chromedrive的路徑'#在地址欄中輸入百度URL browser.get("http://www.baidu.com/")#獲取屏幕截圖 browser.save_screenshot("./test/baidu_screen.png")#關閉瀏覽器 browser.quit()截圖:
- 舉個例子4
利用selenium和chromedriver打開百度,搜索關鍵字【垂耳兔】。
為了在百度中搜索詞條,我們需要知道百度搜索的搜索框和百度一下的按鈕被包含在哪些標記中,故我們審查搜索框元素:
我們發現,這個搜索框在input標記中,且這個input標記的id屬性值為kw.
我們也可以看到,百度一下的按鈕也被包含在input標記中,且這個input標記的id屬性值為su.
python代碼:
# -*- coding: utf-8 -*-from selenium import webdriver#創建瀏覽器對象(打開瀏覽器) browser = webdriver.Chrome() #當我們沒有將chromedrive添加到環境變量中 #那么我們需要指定參數excutable_path='chromedrive的路徑'#在地址欄中輸入百度URL browser.get("http://www.baidu.com/")#找到搜索框 browser.find_element_by_id('kw').send_keys("垂耳兔")#點擊百度一下 browser.find_element_by_id('su').click()#獲取屏幕截圖 browser.save_screenshot("./test/baidu_screen.png")#關閉瀏覽器 browser.quit()截圖:
- 舉個例子5
我們用xpath來查找關鍵字【垂耳兔】
# -*- coding: utf-8 -*-from selenium import webdriverbrowser = webdriver.Chrome() browser.get("http://www.baidu.com/") browser.find_element_by_xpath('//*[@id="kw"]').send_keys("垂耳兔") browser.find_element_by_xpath('//*[@id="su"]').click()browser.quit()瀏覽器對象browser
- 相關方法
- 來個例子
爬取#影#堂最新的5條電影信息。
# -*- coding: utf-8 -*-from selenium import webdriver browser = webdriver.Chrome()#在地址欄中輸入百度URL browser.get("https://www.dytt8.net/html/gndy/dyzz/index.html")xpath = '//*[@id="header"]//div[@class="co_content8"]/ul/table' film_names = browser.find_elements_by_xpath(xpath)for item in film_names[0:5]:print(item.text, '\n')browser.quit()輸出:
2019年劇情喜劇《軍人的妻子》BD中英雙字幕日期:2020-04-22 10:39:03 點擊:0 ◎譯 名 軍人的妻子/軍嫂/女聲我最美(臺) ◎片 名 Military Wives/The Singing Club ◎年 代 2019 ◎產 地 英國 ◎類 別 劇情/喜劇 ◎語 言 英語 ◎字 幕 中英雙字幕 ◎上映日期 2019-09-06(多倫多電影節) / 2020-03-06(英國) ◎IMDb評分 6.4/10 from 1133 users ◎豆 2019年獲獎奇幻《匹諾曹/木偶奇遇記》BD中英雙字幕日期:2020-04-22 16:58:22 點擊:0 ◎譯 名 匹諾曹/木偶奇遇記 ◎片 名 Pinocchio ◎年 代 2019 ◎產 地 意大利,英國,法國 ◎類 別 奇幻 ◎語 言 意大利語 ◎上映日期 2019-12-19(意大利) ◎IMDb評分 6.5/10 from 1726 users ◎豆瓣評分 6.8/10 from 2,205 users ◎字 幕 中英雙字幕 ◎文件格式 x264 + a 2019年動作《葉問4:完結篇》BD國粵雙語中字日期:2020-04-20 10:12:22 點擊:0 ◎譯 名 葉問4:完結篇/Ip M4n/Ip Man 4/Yip Man 4/Yip Man 4:The Finale/葉問4 ◎片 名 葉問4 ◎年 代 2019 ◎產 地 中國香港 ◎類 別 劇情/動作 ◎語 言 國語/粵語 ◎字 幕 中文 ◎上映日期 2019-12-20(中國大陸) ◎IMDb評分 7.5/10 from 4176 users ◎豆瓣評分 7.2 2020年動作懸疑《節奏組/復仇謎奏》BD中英雙字幕日期:2020-04-20 00:52:37 點擊:0 ◎譯 名 節奏組/復仇謎奏 ◎片 名 The Rhythm Section ◎年 代 2020 ◎產 地 英國 ◎類 別 動作 / 懸疑 / 驚悚 ◎語 言 英語 ◎字 幕 中英雙字幕 ◎上映日期 2020-01-31(英國) ◎IMDb評分 5.2/10 from 3922 users ◎豆瓣評分 5.0/10 from 498 users ◎文件格式 x264 + 2018年劇情犯罪《江湖兒女》BD國語中字日期:2020-04-19 20:49:35 點擊:0 ◎譯 名 Ash is Purest White/Money Love ◎片 名 江湖兒女/灰燼是最潔白的/金錢與愛情 ◎年 代 2018 ◎產 地 中國/法國/日本 ◎類 別 劇情/愛情/犯罪 ◎字 幕 中文 ◎語 言 普通話/山西方言/湖北方言/重慶方言 ◎上映日期 2018-05-11(戛納電影節)/2018-09-21(中國) ◎總結
以上是生活随笔為你收集整理的利用python爬虫(part17)--初识selenium的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学生代表大会开幕式致辞3篇
- 下一篇: R语言与非参数检验之两独立样本中位数检验