Python爬虫入门:从零到数据采集

Python爬虫基础指南

Python爬虫是自动化获取网络数据的技术,广泛应用于数据采集、市场分析等领域。以下是核心实现步骤:

1. 核心库选择
python 复制代码
import requests  # 发送HTTP请求
from bs4 import BeautifulSoup  # HTML解析
import pandas as pd  # 数据存储
2. 基础爬取流程
python 复制代码
# 发送请求
response = requests.get("https://example.com/books")
response.encoding = 'utf-8'  # 设置编码

# 解析HTML
soup = BeautifulSoup(response.text, 'html.parser')

# 数据提取示例
book_titles = [h2.text for h2 in soup.select('.book-title')]
book_prices = [float(div.text.strip('¥')) 
               for div in soup.select('.price')]

# 存储数据
df = pd.DataFrame({'书名': book_titles, '价格': book_prices})
df.to_csv('book_data.csv', index=False)
3. 关键技巧
  • 反爬应对

    python 复制代码
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)',
        'Cookie': 'sessionid=abc123'
    }
    response = requests.get(url, headers=headers)
  • 动态页面处理(使用Selenium):

    python 复制代码
    from selenium import webdriver
    driver = webdriver.Chrome()
    driver.get(url)
    dynamic_content = driver.find_element_by_class('js-loaded-data').text
4. 完整案例:豆瓣图书爬虫
python 复制代码
def douban_spider():
    url = "https://book.douban.com/top250"
    res = requests.get(url, headers={'User-Agent': 'Mozilla/5.0'})
    soup = BeautifulSoup(res.text, 'lxml')
    
    books = []
    for item in soup.select('.item'):
        title = item.select_one('.pl2 a')['title']
        rating = item.select_one('.rating_nums').text
        books.append((title, float(rating)))
    
    return pd.DataFrame(books, columns=['书名', '评分'])

df = douban_spider()
df.to_excel('豆瓣图书TOP250.xlsx')
5. 注意事项
  1. 遵守规则

    • 检查robots.txt(如https://site.com/robots.txt
    • 设置请求间隔:time.sleep(random.uniform(1,3))
  2. 异常处理

    python 复制代码
    try:
        response = requests.get(url, timeout=10)
    except (requests.ConnectionError, requests.Timeout) as e:
        print(f"请求失败: {str(e)}")
  3. 数据清洗

    python 复制代码
    # 去除空白字符
    clean_text = re.sub(r'\s+', ' ', raw_text).strip()

提示:对于复杂网站建议使用Scrapy框架,其内置的异步处理、管道机制和中间件能显著提升效率。

相关推荐
刹那芳华19926 小时前
循环神经网络的从零开始实现(RNN)
人工智能·rnn·深度学习
DogDaoDao10 小时前
DeepQTMT: 深度学习加速VVC帧内编码CU划分 —— 论文深度解读与源码拆解
人工智能·深度学习·视频编解码·h266·vvc·帧内预测·deepqtmt
wyg_03111311 小时前
从0搭建极简transformer大模型
人工智能·深度学习·transformer
卡梅德生物科技小能手13 小时前
卡梅德生物科普|TSLP(胸腺基质淋巴细胞生成素)靶点研究概述
经验分享·深度学习·生活
lancyu13 小时前
零基础AI应用编程开发入门 | 吴恩达Prompt工程极简通关指南:新手从零学会工业级提示词开发(可直接复用代码)
人工智能·深度学习·机器学习
LaughingZhu14 小时前
Product Hunt 每日热榜 | 2026-08-03
人工智能·经验分享·深度学习·神经网络·产品运营
惊鸿一博14 小时前
自动驾驶端到端训练_开环训练vs闭环训练
人工智能·深度学习·端到端
湘美书院--湘美谈教育17 小时前
AI时代的奥德赛:算法星空,寻找精神归航
大数据·人工智能·深度学习·机器学习·生活
搞科研的小刘选手17 小时前
【昌吉学院主办】第三届大数据、神经网络与深度学习研讨会(BDNNDL 2026)
大数据·深度学习·神经网络·学术会议·会议推荐
FriendshipT17 小时前
Ubuntu 20.04 下使用 Ollama 本地部署 AI 大模型
linux·人工智能·python·深度学习·ubuntu