2026最新版 Python爬虫数据抓取教程(新手入门+实战案例)
本教程系统讲解 Python 爬虫的基础知识与实战操作,涵盖网页请求、HTML解析、数据提取、数据存储和反爬机制应对。通过详细示例和步骤操作,让新手快速掌握 Python 爬虫的开发流程,同时适合有经验的开发者提升抓取效率和数据处理能力。
正文教程
一、爬虫基础知识
定义:爬虫(Web Crawler)是通过程序自动访问网页并抓取所需数据的工具。
核心流程:
发送请求(Request)
获取网页内容(HTML/JSON)
解析数据
数据存储(CSV、数据库等)
注意事项:遵守robots.txt和网站爬虫协议,避免过度抓取。
二、Python爬虫环境准备
安装 Python 3.x
安装常用库
pip install requests beautifulsoup4 lxml pandas
可选工具:Scrapy 框架(适合大型项目)
三、使用 Requests 获取网页内容
import requests
url = "https://example.com"
headers = {"User-Agent": "Mozilla/5.0"}
response = requests.get(url, headers=headers)
if response.status_code == 200:
html = response.text
print(html[:500]) # 输出前500字符
技巧:
设置 User-Agent 避免被反爬
控制访问频率,避免 IP 被封
四、使用 BeautifulSoup 解析 HTML
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, "lxml")
titles = soup.find_all("h2", class_="title")
for t in titles:
print(t.get_text())
技巧:
.find()获取单个元素,.find_all()获取列表使用 CSS 选择器
soup.select("div.title")更直观
五、抓取分页数据
for page in range(1, 6):
url = f"https://example.com/page/{page}"
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, "lxml")
items = soup.select(".item-title")
for item in items:
print(item.get_text())
技巧:循环结合分页 URL,实现多页数据抓取
六、存储抓取的数据
import pandas as pd
data = [t.get_text() for t in soup.select(".item-title")]
df = pd.DataFrame(data, columns=["Title"])
df.to_csv("data.csv", index=False, encoding="utf-8")
技巧:
CSV 适合小型数据存储
对于大数据,可存入 MySQL 或 MongoDB
七、应对反爬机制
设置请求头:User-Agent、Referer
模拟浏览器行为:使用
Selenium或PlaywrightIP代理池:定期更换 IP 避免封禁
延时访问:使用
time.sleep()控制频率
八、实战案例:抓取新闻标题
import requests
from bs4 import BeautifulSoup
url = "https://news.example.com"
response = requests.get(url, headers={"User-Agent":"Mozilla/5.0"})
soup = BeautifulSoup(response.text, "lxml")
titles = [t.get_text() for t in soup.select(".news-title")]
print(titles)
技巧:通过 CSS 选择器快速提取目标元素,实现数据抓取的高效性
九、总结
通过本教程,你可以:
系统掌握 Python 爬虫开发流程
熟练使用 Requests、BeautifulSoup 抓取网页数据
实现多页抓取、数据存储和处理
应对反爬机制,提高爬虫稳定性
为数据分析、自动化采集和项目开发打下基础