Files
yidaima_tools/docs/baidu.md
王鹏 a2f5875d1b init
2026-04-09 14:55:54 +08:00

83 lines
3.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

这个任务非常适合用 **Playwright** 来实现,因为它对页面加载的等待机制非常智能。
为了保持代码的健壮性,我为你编写了一个独立的脚本。它遵循了我们之前规划的逻辑:**启动浏览器 -> 模拟输入 -> 触发搜索 -> 等待结果渲染 -> 全屏截图**。
### 🐍 Python 自动化脚本实现
```python
import os
import time
from playwright.sync_api import sync_playwright
from datetime import datetime
def search_baidu_and_screenshot(keyword="java教程"):
# 1. 准备截图目录
save_dir = f"./data/screenshots/{datetime.now().strftime('%Y-%m-%d')}"
if not os.path.exists(save_dir):
os.makedirs(save_dir)
file_path = os.path.join(save_dir, f"baidu_search_{keyword}.png")
with sync_playwright() as p:
# 启动浏览器 (headless=False 可以让你看到操作过程)
print("[*] 正在启动 Chromium 浏览器...")
browser = p.chromium.launch(headless=False)
context = browser.new_context(viewport={'width': 1280, 'height': 800})
page = context.new_page()
try:
# 2. 访问百度
print(f"[*] 正在访问百度...")
page.goto("https://www.baidu.com", wait_until="networkidle")
# 3. 定位搜索框并输入关键字
# 百度搜索框的 ID 通常是 'kw'
print(f"[*] 输入搜索关键词: {keyword}")
page.fill("#kw", keyword)
# 4. 点击“百度一下”按钮
# 百度搜索按钮的 ID 通常是 'su'
page.click("#su")
# 5. 等待搜索结果加载
# 我们等待结果列表容器出现,确保内容不是空白
print("[*] 等待搜索结果渲染...")
page.wait_for_selector("#content_left", timeout=10000)
# 稍微额外等待一下,让图片或样式加载更完整
time.sleep(2)
# 6. 截图并保存
print(f"[*] 正在保存截图至: {file_path}")
page.screenshot(path=file_path, full_page=True)
print("[√] 任务完成!")
except Exception as e:
print(f"[!] 操作过程中发生错误: {e}")
# 发生错误时截取当前页面备查
page.screenshot(path=os.path.join(save_dir, "error_state.png"))
finally:
browser.close()
if __name__ == "__main__":
search_baidu_and_screenshot("java教程")
```
### 💡 开发要点解析:
1. **选择器 (Selectors)**
* 百度搜索框的 ID 是 `#kw`
* 百度搜索按钮的 ID 是 `#su`
* 搜索结果的主体容器 ID 是 `#content_left`。使用 `wait_for_selector` 是为了防止在页面还没跳转完就执行截图。
2. **全屏截图 (`full_page=True`)**
* 这个参数非常有用,它会自动滚动页面并拼接,将整个搜索结果列表(包括滚动条下方的内容)完整保存下来。
3. **视口设置 (`viewport`)**
* 设置固定的分辨率可以保证不同环境下截图的一致性,方便后续交给 **Umi-OCR** 进行固定区域的文字识别。
4. **环境准备**
如果你还没有安装 Playwright 运行环境,请执行以下命令:
```bash
pip install playwright
playwright install chromium
```