# pythonpdd **Repository Path**: ranjingqiao3_admin/pythonpdd ## Basic Information - **Project Name**: pythonpdd - **Description**: pddd看到了说是多多少少 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-21 - **Last Updated**: 2025-07-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 拼多多商品数据自动获取工具 一个功能强大的Python工具,用于自动获取拼多多商品数据,支持绕过登录限制,采用多种技术手段确保数据获取的成功率。 ## 🚀 功能特性 - **多种绕过技术**: 支持8种不同的数据获取方法 - **自动重试机制**: 智能选择最佳方法获取数据 - **批量处理**: 支持多个URL的批量抓取 - **数据导出**: 支持JSON、CSV、Excel多种格式导出 - **反爬虫对抗**: 内置多种反爬虫绕过技术 - **异步处理**: 支持并发抓取提高效率 ## 📋 支持的数据字段 - 商品标题 - 价格信息(现价、原价) - 销量数据 - 商品图片 - 商品描述 - 店铺信息 - 品牌信息 - 评分和评论数 - 库存信息 - 运费信息 - 保障信息 ## 🛠️ 技术栈 - **Python 3.7+** - **requests**: HTTP请求库 - **BeautifulSoup4**: HTML解析 - **Selenium**: 浏览器自动化 - **undetected-chromedriver**: 反检测浏览器驱动 - **cloudscraper**: 绕过Cloudflare保护 - **aiohttp**: 异步HTTP请求 - **Playwright**: 现代浏览器自动化 - **pandas**: 数据处理和导出 ## 📦 安装依赖 ```bash pip install -r requirements.txt ``` ## 🚀 快速开始 ### 1. 单个商品抓取 ```python from pdd_scraper import PDDScraper # 创建抓取器 scraper = PDDScraper() # 抓取商品数据 url = "https://mobile.yangkeduo.com/goods.html?goods_id=429422443186" result = scraper.scrape_product(url) if result: print("商品标题:", result.get('title')) print("价格:", result.get('price')) print("销量:", result.get('sales')) ``` ### 2. 高级抓取器(推荐) ```python from advanced_scraper import AdvancedPDDScraper # 创建高级抓取器 scraper = AdvancedPDDScraper() # 抓取商品数据(使用多种技术) url = "https://mobile.yangkeduo.com/goods.html?goods_id=429422443186" result = scraper.scrape_product_advanced(url) if result: print("商品数据:", result) ``` ### 3. 批量抓取 ```python from batch_scraper import BatchPDDScraper # 创建批量抓取器 batch_scraper = BatchPDDScraper(use_advanced=True, max_workers=3) # URL列表 urls = [ "https://mobile.yangkeduo.com/goods.html?goods_id=429422443186", "https://mobile.yangkeduo.com/goods.html?goods_id=123456789", # 更多URL... ] # 批量抓取 results = batch_scraper.scrape_urls(urls) # 保存数据 batch_scraper.save_to_json(results) batch_scraper.save_to_csv(results) batch_scraper.save_to_excel(results) ``` ## 📁 项目结构 ``` h/ ├── requirements.txt # 项目依赖 ├── pdd_scraper.py # 基础抓取器 ├── advanced_scraper.py # 高级抓取器 ├── batch_scraper.py # 批量抓取器 ├── quick_start.py # 快速启动脚本 ├── run.py # 交互式运行脚本 ├── test_scraper.py # 测试脚本 ├── setup.py # 安装脚本 ├── urls.txt # URL列表文件(可选) ├── README.md # 项目说明 ├── 使用说明.md # 中文使用说明 ├── data/ # 数据目录(JSON格式) │ ├── pdd_basic_*.json # 基础抓取器数据 │ ├── pdd_advanced_*.json # 高级抓取器数据 │ ├── pdd_quick_*.json # 快速启动数据 │ └── pdd_batch_*.json # 批量抓取数据 └── output/ # 输出目录(CSV/Excel格式) ├── pdd_batch_*.csv # CSV格式数据 └── pdd_batch_*.xlsx # Excel格式数据 ``` ## 🔧 配置说明 ### 代理设置 在 `advanced_scraper.py` 中的 `_init_proxy_pool` 方法中添加代理: ```python def _init_proxy_pool(self): self.proxy_list = [ 'http://proxy1:port', 'http://proxy2:port', # 更多代理... ] ``` ### 并发设置 ```python # 设置并发数量 batch_scraper = BatchPDDScraper(max_workers=5) ``` ## 🛡️ 绕过技术说明 ### 方法1: 直接请求 - 使用标准HTTP请求 - 随机User-Agent - 模拟真实浏览器请求头 ### 方法2: Cloudscraper - 绕过Cloudflare保护 - 自动处理JavaScript挑战 - 模拟真实浏览器行为 ### 方法3: Undetected ChromeDriver - 反检测浏览器驱动 - 隐藏自动化特征 - 支持JavaScript渲染 ### 方法4: API直接请求 - 直接调用拼多多API - 模拟移动端请求 - 获取结构化数据 ### 方法5: 异步请求 - 使用aiohttp异步处理 - 提高并发性能 - 减少资源占用 ### 方法6: Playwright - 现代浏览器自动化 - 支持多种浏览器引擎 - 更好的反检测能力 ### 方法7: 移动端API模拟 - 模拟移动端请求头 - 使用移动端API接口 - 更高的成功率 ### 方法8: WebView模拟 - 模拟APP内WebView - 特殊的请求头设置 - 绕过移动端限制 ## 📊 数据格式示例 ### JSON格式 ```json { "metadata": { "scrape_time": "2024-01-01T12:00:00", "url": "https://mobile.yangkeduo.com/goods.html?goods_id=429422443186", "goods_id": "429422443186", "tool_version": "1.0.0", "scraper_type": "advanced" }, "data": { "title": "商品标题", "price": "99.9", "original_price": "199.9", "sales": "1000", "images": ["图片URL1", "图片URL2"], "description": "商品描述", "shop_name": "店铺名称", "rating": "4.8", "comments_count": "500" } } ``` ## ⚠️ 注意事项 1. **遵守robots.txt**: 请遵守网站的robots.txt规则 2. **合理使用**: 避免过于频繁的请求,建议添加适当延迟 3. **法律合规**: 确保数据使用符合相关法律法规 4. **代理使用**: 建议使用代理IP避免被封 5. **数据准确性**: 抓取的数据仅供参考,请以官方数据为准 ## 🔧 故障排除 ### 常见问题 1. **ChromeDriver错误** ```bash # 安装Chrome浏览器和ChromeDriver # 或者使用undetected-chromedriver自动下载 ``` 2. **依赖安装失败** ```bash # 升级pip pip install --upgrade pip # 安装依赖 pip install -r requirements.txt ``` 3. **网络连接问题** - 检查网络连接 - 尝试使用代理 - 增加请求超时时间 4. **反爬虫限制** - 增加请求延迟 - 使用代理IP - 更换User-Agent ## 📈 性能优化 1. **并发控制**: 根据目标网站限制调整并发数 2. **代理轮换**: 使用代理池避免IP被封 3. **请求延迟**: 添加随机延迟模拟人工操作 4. **缓存机制**: 对相同URL避免重复请求 ## 🤝 贡献 欢迎提交Issue和Pull Request来改进这个项目! ## 📄 许可证 本项目仅供学习和研究使用,请勿用于商业用途。 ## 📞 联系方式 如有问题或建议,请通过以下方式联系: - 提交GitHub Issue - 发送邮件至项目维护者 --- **免责声明**: 本工具仅供技术学习和研究使用,使用者需要遵守相关法律法规和网站使用条款,作者不承担任何因使用本工具而产生的法律责任。