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