python實現selenium網路爬蟲
selenium最初是一個自動化測試工具,而爬蟲中使用它主要是為了解決requests無法直接執行JavaScript程式碼的問題,selenium本質是透過驅動瀏覽器,完全模擬瀏覽器的操作,比如跳轉、輸入、點選、下拉等,來拿到網頁渲染之後的結果,可支援多種瀏覽器,這裡只用到谷歌瀏覽器。
1.selenium初始化
方法一:會開啟網頁
# 該方法會開啟goole網頁
from selenium import webdriver
url = '網址'
driver = webdriver.Chrome()
driver.get(url)
driver.maximize_window() # 實現視窗最大化
方法二:不會開啟網頁
# 該方法會隱式開啟goole網頁
from selenium import webdriver
url = '網址'
driver = webdriver.ChromeOptions()
driver.add_argument("headless")
driver = webdriver.Chrome(options=driver)
driver.get(url)
driver = webdriver.Chrome()出錯是因為沒有chromedriver.exe這個檔案
2.元素定位
在selenium中,可以有多種方法對元素進行定位,個人通常喜歡用Xpath和selector來定位元素,這樣就不用一個一個的去找節點,直接在網頁上定位到元素複製就行。
driver.find_element_by_id() # 透過元素ID定位
driver.find_element_by_name() # 透過元素Name定位
driver.find_element_by_class_name() # 透過類名定位
driver.find_element_by_tag_name() # 透過元素TagName定位
driver.find_element_by_link_text() # 透過文字內容定位
driver.find_element_by_partial_link_text()
driver.find_element_by_xpath() # 透過Xpath語法定位
driver.find_element_by_css_selector() # 透過選擇器定位
注:若尋找多個元素,要記得用複數來選擇(element改為elements)
# 例如
[i.text for i in driver.find_elements_by_xpath()]
3.建立點選事件
因為有些網站的需求,需建立點選事件,
如下圖的這種時間選擇,需要設定點選和輸入內容,設定的方法也很簡單。
大連人流醫院哪家好
driver.find_element_by_css_selector('').click() # 點選
driver.find_element_by_css_selector('').send_keys('2021-3-9') # 輸入內容
4.切換視窗
有些網站點選之後會產生新視窗,這時就需要進行視窗的切換才能進行元素定位
win = driver.window_handles # 獲取當前瀏覽器的所有視窗
driver.switch_to.window(win[-1]) # 切換到最後開啟的視窗
driver.close() # 關閉當前視窗
driver.switch_to.window(win[0]) # 切換到最初的視窗
5.iframe問題
有些網站會採用iframe來編寫頁面,這時就需要進入到iframe才可以獲取元素,一般有多少個iframe就需要進入多少個iframe。
# 有兩個iframe,需逐步進入
iframe1 = driver.find_element_by_xpath('')
driver.switch_to.frame(iframe1)
iframe2 = driver.find_element_by_xpath('')
driver.switch_to.frame(iframe2)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69945560/viewspace-2762385/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python+PhantomJS+selenium+BeautifulSoup實現簡易網路爬蟲PythonJS爬蟲
- python網路爬蟲應用_python網路爬蟲應用實戰Python爬蟲
- Python網路爬蟲實戰Python爬蟲
- Python網路爬蟲 - Phantomjs, selenium/Chromedirver使用Python爬蟲JSChrome
- 【Python爬蟲9】Python網路爬蟲例項實戰Python爬蟲
- 網路爬蟲——爬蟲實戰(一)爬蟲
- python網路爬蟲_Python爬蟲:30個小時搞定Python網路爬蟲視訊教程Python爬蟲
- python3網路爬蟲開發實戰_Python 3開發網路爬蟲(一)Python爬蟲
- python3網路爬蟲開發實戰_Python3 爬蟲實戰Python爬蟲
- python DHT網路爬蟲Python爬蟲
- 《Python3網路爬蟲開發實戰》教程||爬蟲教程Python爬蟲
- Python爬蟲之路-selenium在爬蟲中的使用Python爬蟲
- Java+MySQL實現網路爬蟲程式JavaMySql爬蟲
- 乾貨分享!Python網路爬蟲實戰Python爬蟲
- Python網路爬蟲實戰小專案Python爬蟲
- Python 3網路爬蟲開發實戰Python爬蟲
- Python網路爬蟲實戰專案大全!Python爬蟲
- python網路爬蟲實戰--重點整理Python爬蟲
- [Python] 網路爬蟲與資訊提取(1) 網路爬蟲之規則Python爬蟲
- 《用Python寫網路爬蟲》--編寫第一個網路爬蟲Python爬蟲
- [Python3網路爬蟲開發實戰] 分散式爬蟲原理Python爬蟲分散式
- python網路爬蟲(14)使用Scrapy搭建爬蟲框架Python爬蟲框架
- 專案--python網路爬蟲Python爬蟲
- python網路爬蟲合法嗎Python爬蟲
- 網路爬蟲(python專案)爬蟲Python
- Python網路爬蟲二三事Python爬蟲
- Python網路爬蟲實戰專案大全 32個Python爬蟲專案demoPython爬蟲
- python網路爬蟲--專案實戰--scrapy嵌入selenium,晶片廠級聯評論爬取(6)Python爬蟲晶片
- 網路爬蟲(六):實戰爬蟲
- 什麼是Python網路爬蟲?常見的網路爬蟲有哪些?Python爬蟲
- Java實現網路爬蟲 案例程式碼Java爬蟲
- Python爬蟲基礎之seleniumPython爬蟲
- python網路爬蟲(9)構建基礎爬蟲思路Python爬蟲
- Python網路爬蟲實戰(一)快速入門Python爬蟲
- Python3網路爬蟲開發實戰Python爬蟲
- python網路爬蟲--爬取淘寶聯盟Python爬蟲
- 網路爬蟲爬蟲
- python爬蟲---網頁爬蟲,圖片爬蟲,文章爬蟲,Python爬蟲爬取新聞網站新聞Python爬蟲網頁網站