Python 爬虫实战:7 个日常常用案例详解
前言
网络爬虫(Web Crawler)是自动化抓取互联网数据的重要工具,广泛应用于数据分析、信息监控、竞品调研等场景。Python 凭借其简洁的语法和丰富的第三方库(如 requests、BeautifulSoup、lxml、Selenium),成为爬虫开发的首选语言。
本文将详细介绍 7 个经典的 Python 爬虫案例,涵盖静态页面解析(正则、XPath、BeautifulSoup)和动态页面渲染(Selenium)。每个案例均包含完整代码、逻辑分析及注意事项,帮助读者系统掌握爬虫技术。
环境准备
在开始之前,请确保已安装以下依赖库:
pip install requests beautifulsoup4 lxml selenium
同时建议配置好代理 IP 和 User-Agent,以应对部分网站的反爬机制。
1. 爬取豆瓣电影 Top250
目标:获取豆瓣电影 Top250 的电影名称、评分和评价人数,并保存为 CSV 文件。
技术点:requests + BeautifulSoup + CSV 写入。
代码示例:
import requests
from bs4 import BeautifulSoup
import csv
import time
# 请求 URL
url = 'https://movie.douban.com/top250'
# 请求头部,模拟浏览器访问
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
}
# 解析页面函数
def parse_html(html):
soup = BeautifulSoup(html, 'lxml')
movie_list = soup.find('ol', class_='grid_view').find_all('li')
for movie in movie_list:
title = movie.find('div', class_='hd').find('span', class_='title').get_text().strip()
rating_num = movie.find('div', class_='star').find('span', class_='rating_num').get_text().strip()
comment_num = movie.find(, class_=).find_all()[-].get_text().strip()
{: title, : rating_num, : comment_num}
():
(, , newline=, encoding=) f:
writer = csv.DictWriter(f, fieldnames=[, , ])
writer.writeheader()
i ():
page_url =
response = requests.get(page_url, headers=headers)
response.status_code == :
item parse_html(response.text):
writer.writerow({: item[], : item[], : item[]})
()
time.sleep()
__name__ == :
save_data()


