各位小伙伴们好呀,我是唐叔。今天咱们来聊聊Python爬虫这个神奇的工具。
文章目录
一、爬虫到底是什么?
简单来说,爬虫就是自动抓取网页数据的程序,就像一只勤劳的小蜘蛛,在互联网上爬来爬去,把我们需要的信息收集起来。
1.1 爬虫的典型应用场景
- 搜索引擎(比如百度、Google)
- 价格监控(比价网站)
- 舆情分析(抓取社交媒体数据)
- 数据采集(学术研究、市场调研)
二、Python爬虫必备工具包
在Python中,这几个库是爬虫的"黄金搭档":
库名 | 用途 | 安装命令 |
---|---|---|
requests | 发送HTTP请求 | pip install requests |
BeautifulSoup | 解析HTML | pip install beautifulsoup4 |
lxml | 快速解析库 | pip install lxml |
selenium | 浏览器自动化 | pip install selenium |
三、基础爬虫四步走
3.1 第一步:发送请求
import requests
url = 'https://www.example.com'
response = requests.get(url)
print(response.status_code) # 200表示成功
3.2 第二步:解析内容
from bs4 import BeautifulSoup
soup = BeautifulSoup(response.text, 'lxml')
title = soup.find('h1').text
print(f"网页标题: {
title}")
3.3 第三步:提取数据
links = [a['href'] for a in soup.find_all('a', href=True)]
print("页面链接:", links)
3.4 第四步:存储数据
import csv
with open('data.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(['链接'])
writer.writerows([[link] for link in links])
四、实战案例:爬取豆瓣电影Top250
下面唐叔带大家做一个完整的实战项目,记得跟着敲代码哦!
4.1 目标分析
我们要获取:
- 电影名称
- 评分
- 经典台词
- 详情页链接
4.2 完整代码实现
import requests
from bs4 import BeautifulSoup
import csv
import time
def scrape_douban_top250():
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
base_url = 'https://movie.douban.com/top250'
movies = []
for start in range(0, 250, 25):
url = f"{
base_url}?start={
start}"
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'lxml')
for item in soup.find_all('div', class_='item'):
title = item.find('span', class_='title').text
rating = item.find('span', class_='rating_num').text
quote = item.find('span', class_='inq').text if item.find('span', class_='inq') else "无"
link = item.find('a')['href']
movies.append([title, rating, quote, link])
time.sleep(2) # 礼貌爬虫,防止被封
# 保存数据
with open('douban_top250.csv', 'w', newline='', encoding='utf-8-sig') as f:
writer = csv.writer(f)
writer.writerow(['电影名称', '评分', '经典台词', '详情链接'])
writer.writerows(movies)
print("数据爬取完成!共获取{}部电影信息".format(len(movies)))
if __name__ == '__main__':
scrape_douban_top250()
4.3 代码解析
- User-Agent设置:模拟浏览器访问
- 分页处理:通过start参数实现
- 数据提取:使用BeautifulSoup定位元素
- 延时设置:time.sleep防止请求过快
- 数据存储:CSV格式方便后续分析
五、爬虫注意事项
- 遵守robots协议:检查目标网站/robots.txt
- 设置请求间隔:避免给服务器造成压力
- 异常处理:网络请求要加try-catch
- 合法合规:不要爬取敏感或个人隐私数据
六、进阶学习路线
- Scrapy框架:专业的爬虫框架
- 反爬应对:验证码、IP封禁等
- 动态页面:Selenium/Playwright
- 分布式爬虫:提高爬取效率
觉得有用的话,别忘了点赞关注唐叔哦!
往期精彩:
- 【Python爬虫必看】requests库常用操作详解 ,附实战案例
- 【Python爬虫必看】Python爬虫必学BeautifulSoup:5分钟上手,小白也能高效抓取豆瓣网页数据!
- 【Python爬虫必看】lxml库实战指南:5分钟教你玩转HTML/XML解析|附豆瓣电影爬虫案例
- 【Python爬虫高级技巧】requests库高级用法 - 代理SSL流式一网打尽
- 【Python爬虫高级技巧】BeautifulSoup高级教程:数据抓取、性能调优、反爬策略,全方位提升爬虫技能!
- 【Python爬虫高级技巧】深入掌握lxml库:XPath解析/HTML处理/性能优化全攻略|附企业级实战案例
更多内容可以关注《唐叔学Python》专栏。