摘要:還記得前幾節(jié),我們在構(gòu)造請求時會給請求加上瀏覽器目的就是為了讓我們的請求模擬瀏覽器的行為,防止被網(wǎng)站的反爬蟲策略限制。創(chuàng)建一個實(shí)例打開網(wǎng)址運(yùn)行后會發(fā)現(xiàn)程序自動打開了瀏覽器,并且定向到了百度首頁。
前面幾節(jié),我們學(xué)習(xí)了用 requests 構(gòu)造頁面請求來爬取靜態(tài)網(wǎng)頁中的信息以及通過 requests 構(gòu)造 Ajax 請求直接獲取返回的 JSON 信息。
還記得前幾節(jié),我們在構(gòu)造請求時會給請求加上瀏覽器 headers,目的就是為了讓我們的請求模擬瀏覽器的行為,防止被網(wǎng)站的反爬蟲策略限制。今天要介紹的 Selenium 是一款強(qiáng)大的工具,它可以控制我們的瀏覽器,這樣一來程序的行為就和人類完全一樣了。
通過使用 Selenium 可以解決幾個問題:
頁面內(nèi)容是由 JavaScript 動態(tài)生成,通過 requests 請求頁面無法獲取內(nèi)容。
爬蟲程序被反爬蟲策略限制
讓程序的行為和人一樣
安裝
pip install selenium
安裝瀏覽器驅(qū)動
驅(qū)動下載地址
下載后把驅(qū)動文件加入環(huán)境變量?;蛘咧苯影羊?qū)動文件和 Python腳本放到同一文件夾下面
測試
安裝完成后,可以編寫以下腳本來測試是否安裝成功。
from selenium import webdriver driver = webdriver.Chrome() # 創(chuàng)建一個 Chrome WebDriver 實(shí)例 driver.get("https://www.baidu.com/") # 打開網(wǎng)址
運(yùn)行后會發(fā)現(xiàn)程序自動打開了 Chrome 瀏覽器,并且定向到了百度首頁。
與頁面交互
WebDriver定義了很多方法,我們可以很方便的操作頁面上的元素
比如獲取元素,可以通過 driver.find_element_by_id("id")或者driver.find_element_by_name("name")以及 xpath路徑的方式來獲取元素??梢酝ㄟ^send_keys 向輸入框中寫入文本。
from selenium import webdriver driver = webdriver.Chrome() driver.get("https://www.baidu.com/") search_input = driver.find_element_by_id("kw") # 獲取到百度搜索框 search_input.send_keys("劉亦菲") # 自動輸入 劉亦菲 submit = driver.find_element_by_id("su") # 獲取到百度一下按鈕 submit.click() # 點(diǎn)擊搜索
運(yùn)行以上腳本,程序會自動打開 Chrome 瀏覽器,并自動搜索 劉亦菲
其他操作
Selenium 可以進(jìn)行各種各樣的操作,使程序完全符合人類的操作習(xí)慣。下面看一下還有哪些功能。
具體可以看官方文檔,這里貼一下地址
https://selenium-python-zh.readthedocs.io/en/latest/index.html
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/42529.html
摘要:楚江數(shù)據(jù)是專業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務(wù),現(xiàn)整理出零基礎(chǔ)如何學(xué)爬蟲技術(shù)以供學(xué)習(xí),。本文來源知乎作者路人甲鏈接楚江數(shù)據(jù)提供網(wǎng)站數(shù)據(jù)采集和爬蟲軟件定制開發(fā)服務(wù),服務(wù)范圍涵蓋社交網(wǎng)絡(luò)電子商務(wù)分類信息學(xué)術(shù)研究等。 楚江數(shù)據(jù)是專業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務(wù),現(xiàn)整理出零基礎(chǔ)如何學(xué)爬蟲技術(shù)以供學(xué)習(xí),http://www.chujiangdata.com。 第一:Python爬蟲學(xué)習(xí)系列教程(來源于某博主:htt...
摘要:耗時代碼運(yùn)行到這句之后觸發(fā)隱式等待,在輪詢檢查后仍然沒有定位到元素,拋出異常。耗時值得一提的是,對于定位不到元素的時候,從耗時方面隱式等待和強(qiáng)制等待沒什么區(qū)別。 ...
文章目錄 selenium 簡介selenium安裝安裝瀏覽器驅(qū)動確定瀏覽器版本下載驅(qū)動 定位頁面元素打開指定頁面id 定位name 定位class 定位tag 定位xpath 定位css 定位link 定位partial_link 定位 瀏覽器控制修改瀏覽器窗口大小瀏覽器前進(jìn)&后退瀏覽器刷新瀏覽器窗口切換常見操作 鼠標(biāo)控制單擊左鍵單擊右鍵雙擊拖動鼠標(biāo)懸停 鍵盤控制 seleni...
摘要:文檔寫得很清楚,也有中文版,你只要看了最初的一小部分,就可以在代碼中派上用場了。 關(guān)于爬蟲的案例和方法,我們已講過許多。不過在以往的文章中,大多是關(guān)注在 如何把網(wǎng)頁上的內(nèi)容抓取下來 。今天我們來分享下,當(dāng)你已經(jīng)把內(nèi)容爬下來之后, 如何提取出其中你需要的具體信息 。 網(wǎng)頁被抓取下來,通常就是 str 字符串類型的對象 ,要從里面尋找信息,最直接的想法就是直接通過字符串的 find 方法 ...
摘要:以下這些項(xiàng)目,你拿來學(xué)習(xí)學(xué)習(xí)練練手。當(dāng)你每個步驟都能做到很優(yōu)秀的時候,你應(yīng)該考慮如何組合這四個步驟,使你的爬蟲達(dá)到效率最高,也就是所謂的爬蟲策略問題,爬蟲策略學(xué)習(xí)不是一朝一夕的事情,建議多看看一些比較優(yōu)秀的爬蟲的設(shè)計(jì)方案,比如說。 (一)如何學(xué)習(xí)Python 學(xué)習(xí)Python大致可以分為以下幾個階段: 1.剛上手的時候肯定是先過一遍Python最基本的知識,比如說:變量、數(shù)據(jù)結(jié)構(gòu)、語法...
閱讀 3926·2021-11-24 09:38
閱讀 3107·2021-11-17 09:33
閱讀 3879·2021-11-10 11:48
閱讀 1246·2021-10-14 09:48
閱讀 3138·2019-08-30 13:14
閱讀 2557·2019-08-29 18:37
閱讀 3402·2019-08-29 12:38
閱讀 1423·2019-08-29 12:30