iT邦幫忙

0

Python 爬蟲系列-模組 pandas、requests 和 Selenium

  • 分享至 

  • xImage
  •  

pandas、requests 和 Selenium 三個 Python 模組的簡單介紹及比較
這三個模組在爬蟲過程中經常會搭配使用,requests 和 pandas 通常用於靜態網頁的抓取和數據處理,Selenium 用於處理動態網頁和複雜的交互操作。

模組 主要用途 優點 缺點 適用場景
pandas 數據處理與分析 抓表格 高效的數據處理與分析功能,支持多種數據格式 主要處理結構化數據,不適用於爬蟲抓取 數據分析、數據清洗與處理
requests 發送 HTTP 請求並獲取網頁內容 使用get和Post抓資料 簡單、快速、輕量 不支持動態網頁、JavaScript 渲染的內容 靜態網頁抓取
Selenium 自動化瀏覽器操作 支持js動態網頁,可以模擬用戶操作 速度較慢,資源消耗大 動態網頁抓取,需要與頁面交互時

pandas

pandas 爬蟲:read_csv

在政府網站的資料開放區、行政院資料開放平台,通常有個地方可以下載 csv 檔,把下載的連結複製之後,貼到 url,再用 pandas 的 read_csv 讀就可以直接用了

import pandas as pd

url = 'https://www.ncc.gov.tw/chinese/files/opendata/%E8%A1%8C%E5%8B%95%E9%80%9A%E4%BF%A1%E6%A5%AD%E5%8B%99%E5%9F%BA%E5%9C%B0%E8%87%BA%E7%B5%B1%E8%A8%88%E6%95%B8(%E5%8D%80%E5%88%86%E7%B8%A3%E5%B8%82%E6%A5%AD%E8%80%85).csv'
#url = 'https://www.ncc.gov.tw/chinese/files/opendata/行動通信業務基地臺統計數(區分縣市業者).csv' # 這樣是不行的
df = pd.read_csv(url, header=0) # 這裡的 header 指的是要用第幾列資料當作表頭
df

pandas 爬蟲:read_html 抓表格

看到網頁裡面有表格,就要想到可以用 read_html。read_html 同時有送請求和解析的功能,送請求的部分只能用 get 請求,似乎沒什麼偽裝,所以可以直接放網址的網頁越來越少。但只要先用 requests 取得網頁原始碼,再用 read_html 解析,就可以省去用 BeautifulSoup 解析和定位的功夫。 回到剛才台積電重訊清單的例子,原本的程式碼如下:

url = 'https://mops.twse.com.tw/mops/web/ajax_t05st01'
data = {'firstin': 1, 'co_id': 2330, 'year': 113}
r = requests.post(url, headers=header, data=data)
soup = BeautifulSoup(r.text, 'html.parser')
soup

基礎爬蟲套件 requests

用途:發送 HTTP 請求(如 GET 和 POST),用於下載網頁內容。
特點:簡單易用,適合抓取靜態網頁。
安裝:
pip install requests
範例:

import requests

response = requests.get("https://example.com")
print(response.text) 

進階爬蟲工具 selenium

用途:自動化操作瀏覽器,抓取需要 JavaScript 渲染的動態網頁。
特點:支持模擬用戶操作(點擊、滾動等)。
檢查是否已安裝:pip show selenium
安裝:
pip install selenium
範例:

from selenium import webdriver

driver = webdriver.Chrome()  # 確保已安裝 ChromeDriver
driver.get("https://example.com")
print(driver.page_source)  # 獲取渲染後的 HTML
driver.quit()

在 Selenium 中,driver 是瀏覽器驅動的實例(對象),用於與瀏覽器進行交互。這裡的 webdriver.Chrome() 表示使用 Google Chrome 作為瀏覽器,並啟動 Chrome 驅動程序(即 ChromeDriver)。

driver 是什麼?

  • driver 是 Selenium 提供的 WebDriver 對象,用來操控瀏覽器的開啟、關閉、導航到某個 URL、執行 JavaScript、抓取頁面內容等操作。
  • WebDriver 是一種自動化測試工具,與瀏覽器驅動程序(如 ChromeDriver)協作,實現對瀏覽器的操控。

webdriver.Chrome() 是什麼?

  • webdriver.Chrome() 是 Selenium 提供的類,用於創建一個與 Google Chrome 瀏覽器對應的 WebDriver 實例。
    工作原理:
  • Selenium 代碼通過 WebDriver 與瀏覽器進行通信。
  • WebDriver 將 Selenium 指令轉發給瀏覽器的驅動程序(如 ChromeDriver)。
  • 驅動程序與瀏覽器交互執行任務,例如打開網頁、點擊按鈕等。

進階爬蟲工具 Python-Selenium : 安裝和使用ChromeDriver
Python進階爬蟲工具-Selenium : 定位


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言