python爬虫基础讲解

发布于:2025-04-05 ⋅ 阅读:(15) ⋅ 点赞:(0)

一、爬虫基础知识

1. 什么是爬虫?

  • 自动化的程序,模拟人类访问网页并获取所需数据
  • 应用场景:数据分析、价格监控、搜索引擎等

2. 爬虫流程

  1. 发送HTTP请求 → 2. 获取响应内容 → 3. 解析数据 → 4. 存储数据

3. 三个核心库

  • requests:发送HTTP请求
  • BeautifulSoup:解析HTML文档
  • lxml:高效解析库(BeautifulSoup的后端之一)

二、环境准备

  1. 安装Python(推荐3.6+版本)
  2. 安装所需库:
pip install requests beautifulsoup4

三、第一个爬虫实战

目标:获取豆瓣电影TOP250第一页的电影标题

import requests
from bs4 import BeautifulSoup

# 1. 发送请求
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/91.0.4472.124 Safari/537.36"
}
response = requests.get(url, headers=headers)

# 2. 解析数据
soup = BeautifulSoup(response.text, 'html.parser')
movie_list = soup.find_all('span', class_='title')

# 3. 提取数据
for movie in movie_list:
    title = movie.get_text()
    if '/' not in title:  # 过滤中文标题
        print(title)

四、核心技能详解

1. 发送请求

# 带参数的请求
params = {'start': 25, 'filter': ''}
response = requests.get(url, headers=headers, params=params)

# 处理超时(单位:秒)
response = requests.get(url, timeout=5)

2. 解析HTML
常用方法:

soup.select('div.item')  # CSS选择器
soup.find('div', attrs={'class': 'info'})  # 查找单个元素
soup.find_all('span', class_='rating_num')  # 查找多个元素

3. 数据存储
保存到CSV文件:

import csv

with open('movies.csv', 'w', newline='', encoding='utf-8') as f:
    writer = csv.writer(f)
    writer.writerow(['标题', '评分'])
    for movie in movies:
        writer.writerow([title, score])

五、应对反爬措施

常见反爬及解决方案

  1. User-Agent检测 → 添加请求头
  2. 频率限制 → 设置延时(time.sleep(2))
  3. 登录验证 → 使用session保持登录状态

改进后的请求头示例

headers = {
    "User-Agent": "Mozilla/5.0 (...)",
    "Referer": "https://movie.douban.com/",
    "Cookie": "your_cookie_here"  # 需定期更新
}

六、完整案例:爬取多页数据

import time

for page in range(0, 250, 25):
    url = f'https://movie.douban.com/top250?start={page}'
    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.text, 'html.parser')
    
    # 解析逻辑...
    
    time.sleep(1)  # 礼貌性延时
    print(f'已爬取第{page//25 +1}页数据')