# bilibili **Repository Path**: yanjin3966/bilibili ## Basic Information - **Project Name**: bilibili - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-21 - **Last Updated**: 2025-08-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # WebScraper 爬虫项目 一个简洁、易用的网页爬虫类,基于 Selenium 和 ChromeDriver 构建。 ## 🚀 特性 - **简洁易用**: 封装了常用的爬虫功能,使用简单 - **稳定可靠**: 只使用系统 PATH 中的 ChromeDriver,避免网络问题 - **功能完整**: 支持页面抓取、截图、图片下载、数据保存等 - **灵活配置**: 支持无头模式、超时设置、自定义保存路径等 - **反检测**: 内置反爬虫检测机制 ## 📁 项目结构 ``` pythonProject/ ├── scraper.py # 爬虫类核心文件 ├── main.py # 主程序入口 ├── example.py # 使用示例 ├── requirements.txt # Python 依赖包 ├── downloads/ # 下载文件目录 └── README.md # 项目说明文档 ``` ## 🛠️ 安装依赖 ```bash # 安装 Python 依赖包 pip install -r requirements.txt # 确保已安装 Chrome 浏览器 # 确保已安装 ChromeDriver 并添加到系统 PATH ``` ## 📖 使用方法 ### 基础使用 ```python from scraper import WebScraper # 创建爬虫实例 scraper = WebScraper(headless=False, timeout=10) # 访问网站 if scraper.navigate_to("https://example.com"): # 获取页面信息 page_info = scraper.get_page_info() # 截图 scraper.take_screenshot("screenshot.png") # 下载图片 downloaded = scraper.download_images(max_count=5) # 保存数据 scraper.save_data(page_info, "data.json") # 关闭浏览器 scraper.close() ``` ### 高级功能 ```python # 等待特定元素出现 element = scraper.wait_for_element(".content", timeout=15) # 点击元素 scraper.click_element("button.submit") # 获取元素文本 text = scraper.get_text(".title") # 查找多个元素 links = scraper.find_elements_by_selector("a", "href") ``` ## 🎯 主要方法 ### 初始化 - `__init__(headless=False, timeout=10)`: 创建爬虫实例 ### 页面操作 - `navigate_to(url, wait_time=3)`: 访问指定网站 - `get_page_info(max_links=10, max_images=10, text_length=500)`: 获取页面信息 ### 截图和下载 - `take_screenshot(filename="screenshot.png", save_dir="downloads")`: 页面截图 - `download_images(max_count=5, save_dir="downloads", timeout=10)`: 下载图片 ### 元素操作 - `find_elements_by_selector(selector, attribute=None)`: 查找元素 - `wait_for_element(selector, timeout=None)`: 等待元素出现 - `click_element(selector, timeout=None)`: 点击元素 - `get_text(selector)`: 获取元素文本 ### 数据管理 - `save_data(data, filename="scraped_data.json", save_dir="downloads")`: 保存数据 - `close()`: 关闭浏览器 ## 🚀 运行程序 ### 运行主程序 ```bash python3 main.py ``` ### 运行示例程序 ```bash python3 example.py ``` ## ⚙️ 配置选项 ### ChromeDriver 选项 - `--no-sandbox`: 禁用沙盒模式 - `--disable-dev-shm-usage`: 禁用共享内存 - `--disable-gpu`: 禁用GPU加速 - `--disable-blink-features=AutomationControlled`: 禁用自动化检测 ### 爬虫参数 - `headless`: 是否使用无头模式(默认 False) - `timeout`: 等待超时时间(默认 10 秒) - `wait_time`: 页面加载等待时间(默认 3 秒) ## 📝 注意事项 1. **ChromeDriver 版本**: 确保 ChromeDriver 版本与 Chrome 浏览器版本匹配 2. **网络连接**: 确保能够正常访问目标网站 3. **反爬虫**: 某些网站可能有反爬虫机制,建议适当调整等待时间 4. **资源管理**: 及时调用 `close()` 方法关闭浏览器 ## 🔧 故障排除 ### ChromeDriver 初始化失败 ```bash # 检查 ChromeDriver 是否在 PATH 中 which chromedriver # 检查 Chrome 版本 google-chrome --version # 下载匹配版本的 ChromeDriver # 访问: https://chromedriver.chromium.org/ ``` ### 页面访问失败 - 检查网络连接 - 增加等待时间 - 尝试使用无头模式 - 检查目标网站是否可访问 ## 📄 许可证 本项目仅供学习和研究使用,请遵守相关网站的使用条款和法律法规。 ## 🤝 贡献 欢迎提交 Issue 和 Pull Request 来改进这个项目!