首頁  >  文章  >  後端開發  >  Python動態網頁抓取範例:selenium和webdriver的應用

Python動態網頁抓取範例:selenium和webdriver的應用

PHPz
PHPz原創
2024-08-23 16:30:371144瀏覽

Python dynamic web scraping example: application of selenium and webdriver

動態網頁抓取通常會使用一些 Python 函式庫,例如處理 HTTP 請求的 requests、模擬瀏覽器行為的 selenium 或 pyppeteer。以下的文章將重點放在selenium的使用。

硒簡介

selenium 是用於測試 Web 應用程式的工具,但它也經常用於 Web 抓取,特別是當需要抓取由 JavaScript 動態產生的 Web 內容時。 selenium 可以模擬瀏覽器中的使用者行為,例如點擊、輸入文字、取得網頁元素。

Python 動態網頁抓取範例

首先,確保你已經安裝了selenium。如果沒有,您可以透過 pip 安裝:

pip install selenium

您還需要下載對應瀏覽器的WebDriver。 ‌假設我們使用Chrome瀏覽器,‌您需要下載ChromeDriver並確保其路徑已新增至系統環境變數中,‌或您可以直接在程式碼中指定其路徑。 ‌

這是一個取得網頁標題的簡單範例:‌

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

# Setting up webdriver
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))

# Open the webpage
driver.get('https://www.example.com')

# Get the webpage title
title = driver.title

print(title)

# Close the browser
driver.quit()

此腳本將開啟 example.com,取得其標題並將其列印出來。 ‌

請注意,‌webdriver_manager 是一個自動管理 WebDriver 版本的第三方函式庫。 ‌如果不想使用,也可以手動下載WebDriver並指定路徑。 ‌

動態網頁可能涉及 JavaScript 呈現的內容。 ‌selenium 可以等待這些元素載入後再進行操作,這非常適合處理此類網頁。 ‌

在python中抓取動態網頁時設定代理

使用Python爬取動態網頁時,常會用到代理。使用代理一方面可以避免很多障礙,另一方面也可以加快工作效率。

上面我們已經介紹了selenium的安裝。另外,您還需要下載對應瀏覽器的WebDriver,並確保其路徑已新增至系統的環境變數中,也可以直接在程式碼中指定其路徑。
完成上述步驟後,我們就可以設定代理並廢棄動態網頁了:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# Set Chrome options
chrome_options = Options()
chrome_options.add_argument('--proxy-server=http://your_proxy_ip:port')

# Specify the WebDriver path (if you have added the WebDriver path to the system environment variables, you can skip this step)
# driver_path = 'path/to/your/chromedriver'
# driver = webdriver.Chrome(executable_path=driver_path, options=chrome_options)

# If WebDriver path is not specified, the default path is used (make sure you have added WebDriver to your system environment variables)
driver = webdriver.Chrome(options=chrome_options)

# Open the webpage
driver.get('https://www.example.com')

# Get the webpage title
title = driver.title

print(title)

# Close the browser
driver.quit()

在本例中,‌--proxy-server=http://your_proxy_ip:port 是設定代理的參數。 ‌‌ 您需要將 your_proxy_ip 和 port 替換為您實際使用的代理伺服器的 IP 位址和連接埠號碼使用。 ‌

如果您的代理伺服器需要驗證,‌您可以使用以下格式:‌

chrome_options.add_argument('--proxy-server=http://username:password@your_proxy_ip:port')

其中使用者名稱和密碼是您的代理伺服器的使用者名稱和密碼。 ‌

執行上述程式碼後,‌selenium 將透過配置的代理伺服器造訪目標網頁‌並列印出網頁的標題。 ‌
如何指定ChromeDriver的路徑?
ChromeDriver 是 Selenium WebDriver 的一部分。它透過WebDriver API與Chrome瀏覽器交互,實現自動化測試、網路爬蟲等功能。 ‌
指定ChromeDriver的路徑主要涉及到環境變數的配置。 ‌具體步驟如下:‌
1.找到Chrome的安裝位置
您可以透過右鍵單擊桌面上的 Google Chrome 捷徑並選擇「開啟檔案位置」來找到它。 ‌
2.將Chrome的安裝路徑加入系統環境變數Path
這允許系統在任何位置識別 ChromeDriver。 ‌
3.下載並解壓縮 ChromeDriver
確保下載與Chrome瀏覽器版本相符的ChromeDriver,並將其解壓縮為exe程式。 ‌
4.將ChromeDriver的exe檔複製到Chrome的安裝路徑
這樣,當你需要使用ChromeDriver時,系統就能自動辨識並呼叫它

以上就是selenium和webdriver在python動態網頁爬取中的應用,以及爬取網頁時如何避免。當然,你也可以透過上面的例子來練習實際操作。

以上是Python動態網頁抓取範例:selenium和webdriver的應用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn