Python爬虫实战入门:手把手教你爬取豆瓣读书Top250(附防封技巧)

文章目录

    • 一、为什么说爬虫是21世纪的"点金术"?
    • 二、菜鸟起飞前的装备检查
      • 2.1 必备三件套(建议收藏)
      • 2.2 新手避坑指南
    • 三、实战:手把手爬取豆瓣读书Top250
      • 3.1 目标拆解(见图文分析)
      • 3.2 完整代码实现(带详细注释)
      • 3.3 数据保存技巧
    • 四、反爬虫攻防战(亲测有效)
      • 4.1 伪装大法
      • 4.2 IP保护盾
      • 4.3 终极武器:Selenium
    • 五、法律红线不能碰!
    • 六、给新手的3条肺腑之言
    • 七、下一步学习路线

一、为什么说爬虫是21世纪的"点金术"?

在这个数据为王的时代(敲黑板!!!),掌握爬虫技能就像拥有阿拉丁神灯!举个栗子:做市场调研不用手动查资料、写论文不用到处找数据、甚至追剧都能自动获取更新提醒…但是注意了!咱们要当"文明挖矿工",只采集公开数据,绝不碰敏感内容!

二、菜鸟起飞前的装备检查

2.1 必备三件套(建议收藏)

# 安装核心库(用清华源飞一般的感觉)
pip install requests beautifulsoup4 -i https://pypi.tuna.tsinghua.edu.cn/simple

# 推荐开发工具
- VS Code(插件装Python和Pylance就行)
- Jupyter Notebook(适合新手边写边看)

2.2 新手避坑指南

  • 遇到403错误别慌!先检查User-Agent(相当于网站的身份证)
  • 访问频率千万别超过2次/秒(否则分分钟被拉黑)
  • 重要数据记得随时保存(血泪教训:我上周刚丢过3小时的数据)

三、实战:手把手爬取豆瓣读书Top250

3.1 目标拆解(见图文分析)

Python爬虫实战入门:手把手教你爬取豆瓣读书Top250(附防封技巧)_第1张图片
(示意图:通过开发者工具查看网页元素结构)

3.2 完整代码实现(带详细注释)

import requests
from bs4 import BeautifulSoup
import csv
import time

def douban_spider():
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) 苹果WebKit/537.36'
    }
    
    # CSV文件准备(记得用utf-8-sig编码解决中文乱码)
    with open('douban_top250.csv', 'w', newline='', encoding='utf-8-sig') as f:
        writer = csv.writer(f)
        writer.writerow(['排名', '书名', '评分', '评语', '链接'])
        
        # 翻页逻辑(总共10页)
        for page in range(0, 250, 25):
            url = f'https://book.douban.com/top250?start={page}'
            response = requests.get(url, headers=headers)
            
            # 解析HTML(重点!)
            soup = BeautifulSoup(response.text, 'html.parser')
            items = soup.find_all('tr', class_='item')
            
            for item in items:
                rank = item.find('div', class_='pl2').get_text(strip=True)
                title = item.find('span', class_='title').text
                rating = item.find('span', class_='rating_nums').text
                quote = item.find('span', class_='inq').text if item.find('span', class_='inq') else ''
                link = item.find('a')['href']
                
                writer.writerow([rank, title, rating, quote, link])
                
            # 绅士间隔(重要!)
            time.sleep(3)
            
if __name__ == '__main__':
    douban_spider()

3.3 数据保存技巧

  • CSV适合快速查看(Excel直接打开)
  • JSON适合后续处理(Python字典格式)
  • MySQL适合大数据量(超过1万条建议用)

四、反爬虫攻防战(亲测有效)

4.1 伪装大法

# 随机User-Agent生成器
from fake_useragent import UserAgent
ua = UserAgent()
headers = {'User-Agent': ua.random}

4.2 IP保护盾

# 使用代理IP(示例格式)
proxies = {
    'http': 'http://10.10.1.10:3128',
    'https': 'http://10.10.1.10:1080',
}
response = requests.get(url, proxies=proxies)

4.3 终极武器:Selenium

# 模拟真人操作(适合动态加载网站)
from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://www.douban.com')
# 添加智能等待
driver.implicitly_wait(10)

五、法律红线不能碰!

  1. 严格遵守robots.txt(比如豆瓣的:https://www.douban.com/robots.txt)
  2. 商业用途必须获得授权
  3. 个人学习也要控制请求频率
  4. 敏感数据(用户信息/付费内容)绝对不碰

六、给新手的3条肺腑之言

  1. 先学正则表达式再学BeautifulSoup(你会回来谢我的)
  2. Scrapy框架等基础扎实了再碰(别急着上火箭)
  3. 每天最多练习2小时(否则容易被封IP)

七、下一步学习路线

  • 中级:学习Scrapy框架 + 分布式爬虫
  • 高级:突破验证码 + JavaScript逆向
  • 终极:自建代理池 + 机器学习识别反爬

最后说句掏心窝的话:爬虫本质是工具,关键看你怎么用。记得去年我用爬虫帮导师收集科研数据,论文效率直接提升70%!但千万别用来做坏事,技术是把双刃剑,且用且珍惜啊~

你可能感兴趣的:(Python爬虫实战入门:手把手教你爬取豆瓣读书Top250(附防封技巧))