# dpStudy **Repository Path**: bestzzk/dp-study ## Basic Information - **Project Name**: dpStudy - **Description**: drissionpage学习记录 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-12-10 - **Last Updated**: 2025-12-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 抖音数据爬虫工具 这是一个优化和封装后的抖音数据爬虫工具,基于DrissionPage库实现,提供了更好的结构和可维护性。 ## 功能特点 - **模块化设计**:将功能拆分为独立的类,提高代码可维护性 - **配置管理**:通过配置类管理爬虫参数 - **错误处理**:完善的异常处理机制 - **数据清洗**:专门处理抖音API返回的复杂JSON数据 - **灵活使用**:支持一键爬取和分步操作两种模式 ## 文件结构 ``` ├── douyin/ # 抖音爬虫模块 │ ├── __init__.py # 包初始化文件 │ ├── douyin_scraper.py # 主要爬虫类和工具类 │ ├── douyin_scraper_examples.py # 使用示例 │ ├── 控制浏览器.py # 原始版本(已优化) │ └── *.json # 示例数据文件 ├── data/ # 数据输出目录 ├── run_douyin_scraper.py # 项目根目录运行脚本 └── README.md # 本文档 ``` ## 安装依赖 ```bash pip install DrissionPage ``` ## 快速开始 ### 方法一:使用根目录脚本(推荐) ```bash python run_douyin_scraper.py ``` ### 方法二:直接运行模块 ```bash cd douyin python douyin_scraper.py ``` ### 方法三:作为Python包使用 ```python from douyin import DouyinScraper # 创建爬虫实例(使用默认配置) scraper = DouyinScraper() # 执行爬取 videos = scraper.scrape() # 保存结果 if videos: scraper.save_to_json(videos, 'data/douyin_videos.json') print(f"共爬取到 {len(videos)} 个视频") ``` ### 自定义配置 ```python from douyin import DouyinScraper, ScraperConfig # 创建自定义配置 config = ScraperConfig( browser_path=r'/Applications/Google Chrome.app', target_url='https://www.douyin.com/search/美食', # 自定义搜索页面 wait_time=5, # 增加等待时间 headless=False # 显示浏览器窗口 ) # 使用自定义配置创建爬虫实例 scraper = DouyinScraper(config) # 执行爬取 videos = scraper.scrape() ``` ### 分步执行 ```python from douyin import DouyinScraper scraper = DouyinScraper() try: # 1. 设置浏览器 scraper.setup_browser() # 2. 开始监听网络请求 scraper.start_listening() # 3. 导航到目标页面 scraper.navigate_to_target() # 4. 捕获API数据 videos = scraper.capture_api_data() # 5. 处理数据 if videos: print(f"成功捕获 {len(videos)} 个视频数据") scraper.save_to_json(videos, 'data/videos.json') finally: # 确保关闭浏览器 scraper.close() ``` ## 类和组件 ### ScraperConfig 配置类,用于管理爬虫的各种参数: - `browser_path`: 浏览器路径 - `remote_debugging_port`: 远程调试端口 - `target_api`: 目标API URL - `target_url`: 目标页面URL - `wait_time`: 页面加载等待时间 - `headless`: 是否使用无头模式 ### JSONCleaner JSON数据清洗工具类,专门处理抖音API返回的复杂响应: - `clean_douyin_response()`: 清洗抖音接口原始响应 - `clean_response_text()`: 清理响应文本,去除非JSON前缀字符 ### DataExtractor 数据提取工具类,从JSON数据中提取视频信息: - `extract_video_info()`: 从JSON数据中提取视频信息 - `format_video_info()`: 格式化视频信息为可读字符串 ### DouyinScraper 主爬虫类,提供完整的爬取功能: - `setup_browser()`: 设置并启动浏览器 - `start_listening()`: 开始监听网络请求 - `navigate_to_target()`: 导航到目标页面 - `capture_api_data()`: 捕获API数据并解析 - `scrape()`: 执行完整的爬取流程 - `save_to_json()`: 将数据保存为JSON文件 ## 数据格式 爬取到的视频数据格式如下: ```json [ { "video_id": "视频ID", "description": "视频描述", "create_time": "创建时间", "author": { "nickname": "作者昵称", "uid": "作者UID" }, "video_url": "视频播放地址" } ] ``` ## 注意事项 1. **浏览器路径**:确保`browser_path`配置正确,指向您的Chrome可执行文件路径 2. **网络环境**:确保网络连接正常,能够访问抖音 3. **等待时间**:根据网络状况调整`wait_time`参数 4. **API变化**:抖音API可能会变化,如遇问题可能需要更新`target_api`和数据处理逻辑 ## 示例 运行示例代码: ```bash cd douyin python douyin_scraper_examples.py ``` 这将运行各种使用示例,包括: - 基本使用示例 - 自定义配置示例 - 分步执行示例 - 数据处理示例 - JSON清洗示例 - 错误处理示例 ## 常见问题 ### Q: 如何设置无头模式? A: 在配置中设置`headless=True`: ```python config = ScraperConfig(headless=True) scraper = DouyinScraper(config) ``` ### Q: 如何自定义搜索关键词? A: 修改`target_url`参数,例如搜索"美食": ```python config = ScraperConfig(target_url='https://www.douyin.com/search/美食') ``` ### Q: 如何处理爬取失败的情况? A: 使用try-except捕获异常: ```python try: videos = scraper.scrape() # 处理数据 except Exception as e: print(f"爬取失败: {e}") ``` ## 许可证 本项目仅供学习和研究使用,请遵守相关法律法规和网站使用条款。 --- # DrissionPage 相关资源 * [官网](https://drissionpage.cn/) * [官方文档](https://drissionpage.cn/browser_control/intro) * [官方文档 other](https://drissionpage.cn/dp40docs/advance/commands) * [Gitee](https://gitee.com/haiyang0726/DrissionPage) # SaossionPage * [Gitee](https://gitee.com/haiyang0726/SaossionPage) # 十一姐B站视频 * [爬虫自动化DrissionPage实战案例](https://space.bilibili.com/308704191/lists/1947582?type=season) # Chrome DevTools Protocol * [底层基于cdp协议](https://chromedevtools.github.io/devtools-protocol/) # 安装 📌 python > pip install DrissionPage 📌 升级最新稳定版 > pip install DrissionPage --upgrade 📌 指定版本升级 > pip install DrissionPage==4.0.0b17