pandas、requests 和 Selenium 三个 Python 模组的简单介绍及比较这三个模组在爬虫过程中经常会搭配使用,requests 和 pandas 通常用于静态网页的抓取和数据处理,Selenium 用于处理动态网页和复杂的交互操作。

模组
主要用途
优点
缺点
适用场景
pandas 数据处理与分析 抓表格 高效的数据处理与分析功能,支持多种数据格式 主要处理结构化数据,不适用于爬虫抓取 数据分析、数据清洗与处理
requests 发送 HTTP 请求并获取网页内容 使用get和Post抓资料 简单、快速、轻量 不支持动态网页、JavaScript 渲染的内容 静态网页抓取
Selenium 自动化浏览器操作 支持js动态网页,可以模拟用户操作 速度较慢,资源消耗大 动态网页抓取,需要与页面交互时

pandas

pandas 爬虫:read_csv

在政府网站的资料开放区、行政院资料开放平台,通常有个地方可以下载 csv 档,把下载的连结复制之后,贴到 url,再用 pandas 的 read_csv 读就可以直接用了

  • 政府网站的资料开放区 https://www.ncc.gov.tw/chinese/opendata_item.aspx?menu_function_sn=208 # 档案下载 → csv → 复制连结网址
  • 政府资料开放平台 https://data.gov.tw/dataset/22592 # 检视资料 → 资料下载网址 → 滑鼠右键 → 复制连结网址

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 : 安装和使用ChromeDriverPython进阶爬虫工具-Selenium : 定位