Python爬虫

一、Python 爬虫核心概念

Python 爬虫本质是模拟浏览器向目标网站发送请求,获取网页数据后解析提取有用信息的程序,核心价值是批量、自动化获取公开网络数据,适用于数据分析、舆情监控、信息聚合等场景。

核心流程(四步走)
  • 发送请求:模拟浏览器向网站服务器发送 HTTP/HTTPS 请求(如 GET/POST);
  • 获取响应:服务器返回网页源码(HTML/JSON/XML);
  • 解析数据:从源码中提取目标信息(如标题、价格、链接);
  • 保存数据:将提取的信息存为 CSV/Excel/ 数据库等格式。

二、必备工具库(环境准备)

1. 基础环境

需安装 Python 3.8+(推荐 3.10),通过pip安装核心库:

bash

运行

复制代码
# 基础库(必装)
pip install requests beautifulsoup4 lxml
# 处理动态页面(可选)
pip install selenium
# 爬虫框架(进阶)
pip install scrapy
# 数据保存(可选)
pip install pandas openpyxl
2. 核心库功能说明
库名 核心作用 适用场景
requests 发送 HTTP 请求,获取网页响应 静态网页爬取(90% 场景)
BeautifulSoup4 (bs4) 解析 HTML/XML 源码,提取指定内容 静态网页数据解析
lxml 高性能 HTML/XML 解析库(支持 XPath) 复杂结构网页解析
selenium 模拟浏览器渲染动态页面(如 JS 加载的内容) 动态网页(如淘宝、抖音)
Scrapy 专业爬虫框架,支持并发、反爬、数据持久化 大型、批量爬虫项目

三、基础实战:爬取静态网页(新手必学)

以爬取豆瓣 Top250 图书(静态网页) 为例,实现完整爬虫流程:

python

运行

复制代码
import requests
from bs4 import BeautifulSoup
import pandas as pd

# 1. 配置请求头(模拟浏览器,避免被反爬)
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}

# 2. 定义爬虫函数
def crawl_douban_book():
    # 存储数据的列表
    book_list = []
    # 爬取第一页(豆瓣Top250图书第一页)
    url = "https://book.douban.com/top250?icn=index-book250-all"
    
    try:
        # 发送GET请求
        response = requests.get(url, headers=headers, timeout=10)
        response.raise_for_status()  # 检查请求是否成功(状态码200)
        response.encoding = response.apparent_encoding  # 自动识别编码,避免乱码
        
        # 3. 解析网页源码
        soup = BeautifulSoup(response.text, "lxml")
        # 定位图书列表节点
        book_items = soup.find_all("tr", class_="item")
        
        # 提取每本图书的信息
        for item in book_items:
            book_info = {}
            # 提取书名
            book_info["title"] = item.find("div", class_="pl2").find("a")["title"]
            # 提取评分
            book_info["score"] = item.find("span", class_="rating_nums").text
            # 提取简介
            book_info["intro"] = item.find("p", class_="pl").text.strip()
            # 加入列表
            book_list.append(book_info)
        
        # 4. 保存数据为Excel
        df = pd.DataFrame(book_list)
        df.to_excel("豆瓣Top250图书_第一页.xlsx", index=False)
        print("爬取完成!数据已保存为Excel文件")
        
    except Exception as e:
        print(f"爬取出错:{e}")

# 执行爬虫
if __name__ == "__main__":
    crawl_douban_book()
代码说明:
  • headers:设置 User-Agent 模拟浏览器,避免被网站识别为爬虫;
  • requests.get():发送 GET 请求获取网页源码;
  • BeautifulSoup:通过标签 + 类名定位元素,提取书名、评分等信息;
  • pandas:将数据保存为 Excel,方便后续分析。
运行结果:

生成豆瓣Top250图书_第一页.xlsx文件,包含每本图书的书名、评分、作者 / 出版社等信息。

四、进阶技巧:应对反爬与动态页面

1. 常见反爬策略及应对
反爬手段 应对方法
检测 User-Agent 配置真实的 User-Agent,甚至随机切换
限制请求频率 加入延时(time.sleep(1-3)),避免高频请求
IP 封禁 使用代理 IP 池(如快代理、芝麻代理)
验证码 对接打码平台(如超级鹰)或手动识别
2. 爬取动态页面(Selenium 示例)

针对 JS 加载的页面(如某电商商品价格),用 Selenium 模拟浏览器:

python

运行

复制代码
from selenium import webdriver
from selenium.webdriver.common.by import By
import time

# 初始化浏览器(需提前下载ChromeDriver,与浏览器版本匹配)
driver = webdriver.Chrome()

try:
    # 打开目标页面
    driver.get("https://www.xxx.com/xxx")
    time.sleep(2)  # 等待页面加载
    
    # 提取动态加载的价格
    price = driver.find_element(By.CLASS_NAME, "price").text
    print(f"商品价格:{price}")
    
finally:
    driver.quit()  # 关闭浏览器

五、合规与注意事项(必看)

  1. 遵守 robots 协议 :访问目标网站https://xxx.com/robots.txt,查看允许爬取的范围;
  2. 控制请求频率:避免短时间高频请求,给服务器造成压力(建议每次请求间隔 1-3 秒);
  3. 仅爬取公开数据:禁止爬取隐私信息(如手机号、身份证)、付费内容,避免法律风险;
  4. 注明数据用途:爬取的数据仅限个人学习 / 研究,禁止商用或恶意传播。

总结

  1. Python 爬虫核心流程:发请求→取响应→解析数据→存数据 ,新手先掌握requests+bs4爬取静态页面;
  2. 反爬应对核心:模拟真实浏览器行为(请求头、延时),避免高频请求;
  3. 合规第一:遵守网站规则,仅爬取公开、非隐私数据,避免法律风险。
相关推荐
网上邻居YY1 分钟前
深度学习DL 之 安装PyTorch·GPU版、CUDA(本人Anaconda、Python、PyCharm已提前安装好)
pytorch·经验分享·python·深度学习·pycharm·学习方法
AI、少年郎2 分钟前
如何用个人电脑快速训练自己的语言模型?MiniMind 全流程实战指南
人工智能·python·神经网络·ai·自然语言处理·大模型·模型训练微调
王家视频教程图书馆4 分钟前
rust 写gui 程序 最流行的是哪个
开发语言·后端·rust
枫叶林FYL5 分钟前
【Python高级工程与架构实战】项目四 现代ETL编排平台:Airflow + dbt + Snowflake 企业级数据管道架构与实现
人工智能·python·架构·etl
源码之屋6 分钟前
计算机毕业设计:Python天气数据采集与可视化分析平台 Django框架 线性回归 数据分析 大数据 机器学习 大模型 气象数据(建议收藏)✅
人工智能·python·深度学习·算法·django·线性回归·课程设计
Wadli7 分钟前
Oncall Agent项目
开发语言
艾莉丝努力练剑12 分钟前
【QT】Qt常用控件与布局管理深度解析:从原理到实践的架构思考
linux·运维·服务器·开发语言·网络·qt·架构
捧月华如12 分钟前
React vs Vue vs Angular:三大前端框架深度对比
python·github
AI_Claude_code13 分钟前
安全与合规核心:匿名化、日志策略与法律风险规避
网络·爬虫·python·tcp/ip·安全·http·网络爬虫