Python 爬蟲三劍客:玩轉(zhuǎn) Requests、BeautifulSoup、Selenium!
想提取頁面標(biāo)題、關(guān)鍵內(nèi)容?今天我們舉例,搞懂 Python 爬蟲最常用的三大工具!
Requests:快速發(fā)起請求,獲取網(wǎng)頁結(jié)果
適合處理靜態(tài)網(wǎng)頁,比如獲取CSDN結(jié)果的原始 HTML。不保證一定獲取網(wǎng)頁內(nèi)容,看網(wǎng)站保護措施。
示例:請求CSDN頁面
import requests
url = "https://www.csdn.net/"
headers = {
"User-Agent": "Mozilla/5.0"
}
res = requests.get(url, headers=headers)
print(res.text[:500]) # 打印前 500 個字符
適合初學(xué)者:一行代碼就能發(fā)請求。
BeautifulSoup:解析 HTML 內(nèi)容,提取標(biāo)題
搭配 Requests,解析頁面結(jié)構(gòu),提取標(biāo)題。
示例:提取資訊頭條的標(biāo)題
import requests
from bs4 import BeautifulSoup
url = "https://www.csdn.net/"
headers = {
"User-Agent": "Mozilla/5.0"
}
res = requests.get(url, headers=headers)
soup = BeautifulSoup(res.text, "lxml")
results = soup.select("div.home-info") # 獲取“資訊頭條”的標(biāo)題
title = results[0].find("span").get_text()
print(f"{title}\n")
Selenium:模擬瀏覽器操作,解決 JavaScript 加載問題
如果你想實現(xiàn)「打開百度首頁 → 輸入關(guān)鍵詞 → 自動點擊搜索」的完整流程,Selenium 就是你的神器!
示例:自動在百度搜索“Python 爬蟲”
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
# 找到輸入框并輸入關(guān)鍵詞
search_input = driver.find_element(By.ID, "kw")
search_input.send_keys("Python 爬蟲")
search_input.send_keys(Keys.RETURN)
# 頁面就自動跳轉(zhuǎn)了
time.sleep(200)
# 具體爬取內(nèi)容方法后續(xù)詳細講
driver.quit()
優(yōu)點:完全模擬瀏覽器操作,可見即可爬。
推薦組合方式
頁面類型 | 推薦工具 |
普通 HTML 頁面 |
|
JavaScript 頁面 |
|
登錄、操作交互頁 |
|
接口 API |
|
反爬建議
- 加入User-Agent,防止被百度判定為爬蟲
- 加上time.sleep(),模擬人類訪問行為
- 控制請求頻率,避免被封 IP
小結(jié)
工具 | 優(yōu)勢 | 劣勢 |
Requests | 快速輕便 | 不能處理 JS |
BeautifulSoup | 提取結(jié)構(gòu)清晰、簡單 | 需搭配其他庫 |
Selenium | 模擬瀏覽器功能強大 | 啟動慢、資源消耗大 |
學(xué)會這三大爬蟲工具,就能勝任 80% 的網(wǎng)頁數(shù)據(jù)抓取任務(wù)。關(guān)于js逆向不適合小白學(xué)習(xí),并且爬蟲爬數(shù)據(jù)本就要遵守網(wǎng)站的規(guī)則,如果設(shè)置復(fù)雜驗證了,那就是不想讓你去爬,強行為之可別太刑了。