一、什么是 Python 数据采集
数据采集(爬虫):使用 Python 自动请求网页 / 接口,解析并提取所需数据(文本、表格、图片、JSON 等),实现批量、自动化获取信息。
核心用途:
- 数据分析、机器学习数据集收集
- 电商价格监控、舆情监测
- 办公自动化:批量抓取表格导出 Excel
- 科研、自媒体素材收集
二、必备核心库
1. 请求库(获取网页源码)
- requests:最常用,发送 GET/POST 请求
- urllib:Python 内置,功能基础
- aiohttp:异步高并发采集
2. 解析库(提取数据)
- BeautifulSoup4:简单易用,适合新手
- lxml:速度快,支持 XPath
- re(正则):复杂文本提取
- json:接口 JSON 数据解析
3. 框架(大规模采集)
- Scrapy:企业级爬虫框架,高并发、去重、分布式
- Playwright / Selenium:模拟浏览器,抓 JS 动态渲染页面
4. 存储库
- pandas:保存为 Excel/CSV
- pymysql:存入 MySQL
- openpyxl:Excel 操作
三、基础采集流程
四、基础实战:静态网页采集
以抓取简单网页标题和文本为例
安装依赖
bash
运行
pip install requests beautifulsoup4 pandas
完整代码
python
运行
import requests
from bs4 import BeautifulSoup
import pandas as pd
# 1. 请求头(模拟浏览器,防止被反爬)
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
}
# 2. 发送请求
url = "https://news.baidu.com/"
response = requests.get(url, headers=headers)
response.encoding = "utf-8" # 设置编码
# 3. 解析页面
soup = BeautifulSoup(response.text, "html.parser")
# 4. 提取数据(以新闻标题为例)
news_list = []
for item in soup.select(".hotnews li a"): # CSS 选择器
title = item.get_text(strip=True)
link = item.get("href")
news_list.append({"标题": title, "链接": link})
# 5. 保存到 Excel
df = pd.DataFrame(news_list)
df.to_excel("新闻数据.xlsx", index=False)
print("抓取完成,已保存到 新闻数据.xlsx")
五、进阶:JSON 接口采集
很多网页数据通过接口返回 JSON,比 HTML 更好抓:
python
运行
import requests
url = "https://api.xxx.com/data"
headers = {"User-Agent": "…"}
res = requests.get(url, headers=headers)
data = res.json() # 直接转字典
# 提取字段
for item in data["list"]:
title = item["title"]
print(title)
六、进阶:动态网页(JS 渲染)
用 Playwright 模拟浏览器加载 JS:
bash
运行
pip install playwright
playwright install
python
运行
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=False)
page = browser.new_page()
page.goto("https://dynamic-page.com")
# 获取渲染后 HTML
html = page.content()
print(html)
browser.close()
七、反爬应对(常用)
八、合法合规重要提醒
- 只爬取公开数据
- 遵守网站 robots.txt
- 不用于商业牟利、不爬取隐私信息
- 避免对服务器造成压力
九、完整学习路线
如果你需要,我可以给你写:
- 某网站完整定向爬虫
- 批量爬图片 / 小说 / 商品数据
- 爬取并自动生成 Excel 报表




