【Python爬虫必看】零基础手把手教你爬取豆瓣电影Top250,附完整代码实战!

各位小伙伴们好呀,我是唐叔。今天咱们来聊聊Python爬虫这个神奇的工具。

一、爬虫到底是什么?

简单来说,爬虫就是自动抓取网页数据的程序,就像一只勤劳的小蜘蛛,在互联网上爬来爬去,把我们需要的信息收集起来。

1.1 爬虫的典型应用场景

  1. 搜索引擎(比如百度、Google)
  2. 价格监控(比价网站)
  3. 舆情分析(抓取社交媒体数据)
  4. 数据采集(学术研究、市场调研)

二、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 代码解析

  1. User-Agent设置:模拟浏览器访问
  2. 分页处理:通过start参数实现
  3. 数据提取:使用BeautifulSoup定位元素
  4. 延时设置:time.sleep防止请求过快
  5. 数据存储:CSV格式方便后续分析

五、爬虫注意事项

  1. 遵守robots协议:检查目标网站/robots.txt
  2. 设置请求间隔:避免给服务器造成压力
  3. 异常处理:网络请求要加try-catch
  4. 合法合规:不要爬取敏感或个人隐私数据

六、进阶学习路线

  1. Scrapy框架:专业的爬虫框架
  2. 反爬应对:验证码、IP封禁等
  3. 动态页面:Selenium/Playwright
  4. 分布式爬虫:提高爬取效率

觉得有用的话,别忘了点赞关注唐叔哦!

往期精彩

更多内容可以关注《唐叔学Python》专栏