Python爬虫实战入门:30分钟学会抓取网页数据(附完整代码)

想用Python轻松抓取网页数据?这篇实战教程带你30分钟上手!

(小声说)你可能不知道,现在网上90%的数据都能用Python爬虫轻松获取!无论是商品价格、新闻资讯还是电影评分,只要肉眼能看到的网页数据,Python爬虫都能帮你自动化采集。今天我们就用最简单的代码,手把手带你实现第一个爬虫项目!


🛠️ 环境准备(超简单!)

在开始前,你只需要:

  1. 安装Python 3.6+(推荐用最新版)
  2. 安装这两个库:
pip install requests  # 网页请求神器
pip install beautifulsoup4  # HTML解析利器

(注意!)不要直接复制网站数据,先看完整个教程再动手!


🎯 实战目标:抓取豆瓣电影Top250

我们以经典案例【豆瓣电影Top250】作为目标,完整流程包含:

  1. 发送网页请求
  2. 解析HTML结构
  3. 提取关键数据
  4. 处理分页
  5. 保存结果

第一步:发送网页请求(核心代码仅3行!)

import requests

url = "https://movie.douban.com/top250"
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
}
response = requests.get(url, headers=headers)
print(response.status_code)  # 打印200表示成功!

(超级重要)一定要加headers模拟浏览器访问!很多网站会拦截没有User-Agent的请求!


第二步:解析HTML结构

用浏览器开发者工具(F12)找到数据的位置:
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(伪示意图)

实际代码解析:

from bs4 import BeautifulSoup

soup = BeautifulSoup(response.text, 'html.parser')
movies = soup.find_all('div', class_='item')

for movie in movies[:3]:  # 先测试前3条数据
    title = movie.find('span', class_='title').text
    print(f"电影名称:{title}")

(个人心得)BeautifulSoup的find_allfind方法灵活搭配使用,就能搞定90%的解析需求!


第三步:完整数据提取

提取电影名称、评分、经典台词等信息:

for movie in movies:
    # 中文标题(过滤外文标题)
    title = movie.find('span', class_='title').text
    # 评分(注意处理小数)
    rating = movie.find('span', class_='rating_num').text
    # 经典台词(可能为空的情况)
    quote_tag = movie.find('span', class_='inq')
    quote = quote_tag.text if quote_tag else "暂无台词"
    
    print(f"{title} | 评分:{rating} | 台词:{quote}")

(避坑指南)遇到标签不存在的情况一定要用if else处理,否则会报错!


第四步:处理分页(核心技巧!)

豆瓣电影分页规律分析:start=0start=25start=50

base_url = "https://movie.douban.com/top250?start={}"
for page in range(0, 250, 25):
    url = base_url.format(page)
    # 这里要重新发送请求并解析(建议封装成函数)
    # 为防止被封IP,建议添加time.sleep(2)

(重要提醒)控制请求频率!建议每请求2页暂停1秒,否则可能被封禁IP!


第五步:保存数据

方案一:保存到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, rating, quote])
方案二:保存到MySQL数据库(进阶)
import pymysql

conn = pymysql.connect(host='localhost', user='root', password='123456', db='spider')
cursor = conn.cursor()
# 创建表(仅需执行一次)
cursor.execute('''CREATE TABLE movies
             (title VARCHAR(100), rating FLOAT, quote TEXT)''')
# 插入数据
cursor.execute("INSERT INTO movies VALUES (%s, %s, %s)", (title, rating, quote))
conn.commit()

(数据库小白注意)记得先安装pymysql库,并修改自己的数据库配置!


⚠️ 爬虫道德与注意事项

  1. 遵守网站的robots.txt协议
  2. 不要高频访问(建议设置3秒以上间隔)
  3. 不要抓取敏感数据或个人隐私
  4. 商用前务必获得网站授权

(血泪教训)我之前因为请求太快被封过IP,大家一定要控制手速!


🚀 下一步学习方向

  1. 动态网页抓取(Selenium/Playwright)
  2. 反爬策略突破(IP代理、验证码识别)
  3. 异步高性能爬虫(aiohttp)
  4. 爬虫框架(Scrapy)

(个人建议)新手先掌握基础再学框架,不要直接上Scrapy!


完整代码获取

关注公众号【Python学习站】,回复【豆瓣爬虫】获取完整可运行代码!(伪示例)

(其实自己动手敲一遍效果更好!遇到问题欢迎评论区提问~)


💡 爬虫就像开盲盒,永远不知道下一个数据会带来什么惊喜!快去试试吧!遇到问题评论区见~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值