一、什么是爬虫?
网络爬虫(Web Crawler),又称网页蜘蛛,是一种自动抓取互联网信息的程序。爬虫会模拟人的浏览行为,向网站发送请求,然后获取网页内容并提取有用的数据。
二、Python爬虫的基本原理
爬虫的基本工作流程如下:
-
发送请求:使用
requests
等库向目标网站发送 HTTP 请求。 -
获取响应:服务器返回 HTML 页面内容。
-
解析数据:使用
BeautifulSoup
、lxml
或re
提取所需的数据。 -
保存数据:将数据保存为 CSV、Excel、数据库等格式。
三、搭建一个简单的 Python 爬虫
1. 安装必要的库
pip install requests beautifulsoup4
2. 示例目标:爬取豆瓣电影 Top 250 的电影名称
地址:豆瓣电影 Top 250
3. 基本代码结构
import requests
from bs4 import BeautifulSoup
# 设置请求头,模拟浏览器访问
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36'
}
# 循环每一页(每页25部电影,共10页)
for page in range(0, 250, 25):
url = f'https://movie.douban.com/top250?start={page}'
response = requests.get(url, headers=headers)
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'html.parser')
movie_tags = soup.find_all('div', class_='hd')
for tag in movie_tags:
title = tag.a.span.text
print(title)
else:
print(f"请求失败:{response.status_code}")
4. 运行结果(部分)
肖申克的救赎
霸王别姬
阿甘正传
这个杀手不太冷
...
四、常见反爬机制及应对
1. User-Agent 检查
→ 解决方法:自定义请求头。
2. 频繁请求封 IP
→ 解决方法:使用 time.sleep()
控制请求间隔,或使用代理。
3. 动态加载页面(JS 渲染)
→ 解决方法:使用 Selenium 或 Playwright 等浏览器自动化工具。
五、进阶:使用 Selenium 爬取动态网页
pip install selenium
代码示例(以百度为例):
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
search_box = driver.find_element(By.ID, 'kw')
search_box.send_keys('Python 爬虫')
search_button = driver.find_element(By.ID, 'su')
search_button.click()
time.sleep(2)
print(driver.page_source) # 打印网页HTML
driver.quit()
六、数据保存(CSV 示例)
import csv
with open('movies.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerow(['电影名称'])
for title in movie_titles:
writer.writerow([title])
七、建议与注意事项
-
尊重网站的 Robots.txt 协议,不恶意爬取。
-
控制请求频率,避免造成服务器负担。
-
爬虫只是工具,数据的合法使用才是重点。
八、结语
本教程只是 Python 爬虫的入门介绍,后续还可以学习更多内容,比如:
-
Scrapy 框架
-
多线程爬虫
-
分布式爬虫(如结合 Redis)
-
反爬机制绕过技巧
-
数据可视化与分析
如果你刚入门 Python 爬虫,建议从小项目练起,熟悉请求与解析的流程,再逐步扩展。