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 : 定位