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

该文章已生成可运行项目,

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

一、爬虫到底是什么?

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

1.1 爬虫的典型应用场景

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

二、Python爬虫必备工具包

在Python中,这几个库是爬虫的"黄金搭档":

库名用途安装命令
requests发送HTTP请求pip install requests
BeautifulSoup解析HTMLpip 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》专栏

本文章已经生成可运行项目
要使用爬虫爬取豆瓣电影Top250影评的相关信息,可参考以下步骤和方法: ### 准备工作 需要使用相关库来完成任务,使用`requests`库发送HTTP请求,`BeautifulSoup`库解析HTML内容,`pandas`库存储和保存数据 [^2]。 ### 发送请求 通过URL向服务器发起request请求,请求可包含额外的header信息,以模拟浏览器访问,避免被网站识别为爬虫而拒绝访问。示例代码如下: ```python import urllib.request def askURL(url): head = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36"} request = urllib.request.Request(url, headers=head) html = "" try: response = urllib.request.urlopen(request) html = response.read().decode("utf-8") except urllib.error.URLError as e: if hasattr(e, "code"): print(e.code) if hasattr(e, "reason"): print(e.reason) return html ``` ### 解析数据 使用`BeautifulSoup`库对获取的HTML内容进行解析,提取出所需的影评信息。示例代码如下: ```python from bs4 import BeautifulSoup def parse_html(html): soup = BeautifulSoup(html, 'html.parser') # 这里需要根据豆瓣影评页面的实际HTML结构来定位影评信息 # 例如找到影评的标签和对应的类名或ID reviews = soup.find_all('div', class_='review-item') for review in reviews: # 提取影评的具体内容,这里只是示例,需要根据实际情况修改 title = review.find('span', class_='title').text content = review.find('div', class_='content').text print(title) print(content) ``` ### 循环爬取多页影评 豆瓣电影Top250影评可能有多页,需要通过循环来爬取多页的影评信息。示例代码如下: ```python base_url = 'https://movie.douban.com/top250/reviews?start=' for i in range(0, 100, 20): # 假设爬取前100条影评,每页20条 url = base_url + str(i) html = askURL(url) parse_html(html) ``` ### 保存数据 可以使用`pandas`库将爬取到的影评信息保存到文件或数据库中。示例代码如下: ```python import pandas as pd data = [] # 在parse_html函数中,将提取到的信息添加到data列表中 # data.append([title, content]) df = pd.DataFrame(data, columns=['标题', '内容']) df.to_csv('douban_top250_reviews.csv', index=False) ``` ### 注意事项 在实际应用中,要根据需要进一步扩展和优化爬虫,增加错误处理和异常捕获等。同时,要注意遵守网站的使用条款和法律法规,避免对网站造成不要的负担和影响 [^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

唐叔在学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值