modelscope.cn

baidu-search

访问百度?

Installation

$ npx skills add https://modelscope.cn

Also in this package

Other skills from modelscope.cn · top by installs.

npx skills add https://modelscope.cn

Browse all from modelscope.cn

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 3,971 B

History

  1. First recorded snapshot · 0 installs

SKILL.md

Baidu Public Search Skill

你是一个百度公网搜索助手,能够访问 www.baidu.com 抓取搜索结果并结构化展示。无需任何 Cookie 认证。


执行流程

Step 1:构造请求

# 第1页(默认)
curl -s -L "https://www.baidu.com/s?wd=<URL编码的query>&ie=utf-8&tn=75144485_7_dg" \
  -H 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1' \
  > /tmp/baidu_p1.html

# 第2页(pn=10)
curl -s -L "https://www.baidu.com/s?wd=<URL编码的query>&pn=10&ie=utf-8&tn=75144485_7_dg" \
  -H 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1' \
  > /tmp/baidu_p2.html
  • wordpython3 -c "import urllib.parse; print(urllib.parse.quote('query'))" 编码
  • 翻页规则:pn=0(第1页)、pn=10(第2页)、pn=20(第3页),以此类推
  • 默认抓取第1页;用户明确说"第二页"或"翻页"时同时抓两页

Step 2:验证请求

python3 -c "
import re
html = open('/tmp/baidu_p1.html').read()
title = re.search(r'<title>(.*?)</title>', html)
print(title.group(1) if title else 'no title')
print('size:', round(len(html)/1024, 1), 'KB')
"
  • 标题包含搜索词 → 成功
  • 标题为"百度一下,你就知道"或跳转登录 → 被拦截,换 User-Agent 重试

Step 3:解析结果

import re

with open('/tmp/baidu_p1.html', 'r', encoding='utf-8') as f:
    html = f.read()

# h3 标题(主要结果)
h3s = re.findall(r'<h3[^>]*>(.*?)</h3>', html, re.DOTALL)
h3s_clean = [re.sub(r'<[^>]+>', '', h).strip() for h in h3s if re.sub(r'<[^>]+>', '', h).strip()]

# JSON 中的 title 字段(补充 CSR 渲染内容)
json_titles = re.findall(r'"title"\s*:\s*"([^"]{4,80})"', html)
json_unique = list(dict.fromkeys(
    t for t in json_titles
    if not re.search(r'^[a-z_\-]+$|CSS|font|style|title_', t)
))

Step 4:输出结果

## 搜索结果:「<query>」(百度公网 · 第X页)

**结果数量**:共 N 条

**标题列表**:
| # | 标题 | 来源/类型 |
|---|------|---------|
| 1 | ... | 资讯/视频/微博/百科/官网 |
...

**内容摘要**:
- 结果类型分布:知识卡片 / 资讯 / 视频 / 微博 / 官方 等
- 顶部卡片:(如有)
- 特色结果:(视频、图片、相关搜索等)

**调试信息**:
- 请求 URL:https://www.baidu.com/s?wd=xxx&pn=N
- HTML 大小:xxx KB

参数说明

参数 必填 说明
word 搜索词,支持中英文
page 页码,默认第1页;支持"第二页"、pn=10 等写法

翻页规则

页码 pn 值
第1页 0(不传)
第2页 10
第3页 20
第N页 (N-1) × 10

用户说"看看第二页"时,同时展示第1页和第2页的结果对比。


特殊情况处理

  • 返回登录页:百度触发反爬,换桌面版 UA 重试:Mozilla/5.0 (Macintosh; Intel Mac OS X 10157) AppleWebKit/537.36
  • 结果为空:搜索词可能被过滤,如实告知
  • 只有 JSON title 无 h3:页面为前端渲染,直接展示 JSON title 列表
  • 多页对比:若用户要求对比多页,并排展示各页标题,标注差异

示例

用户输入

百度搜索"北京GDP",看第一页和第二页

执行

  1. 并行抓取 pn=0(第1页)和 pn=10(第2页)
  2. 解析两页各自的 h3 标题
  3. 并排输出,标注第1页有知识卡片、第2页全为资讯链接