Skip to main content

Search the web, rank results, fetch any page content.

Project description

SkySearch

基于 Bing 搜索 + BM25 排序的轻量级搜索引擎,支持动态页面抓取。

特性

  • Bing 搜索:SessionPage 底层 TLS 指纹伪装,绕过反爬
  • 动态页面:Chromium 多标签页并行抓取
  • BM25 排序:jieba 中文分词 + rank-bm25 相关性排序
  • 多模式输出text / info / raw 三种输出模式
  • CLI 工具:支持命令行参数,也可用作 Python 库

安装

pip install skysearch

命令行使用

搜索模式

# 交互式输入
skysearch

# 指定关键词
skysearch "深度学习框架"

# 指定结果数量
skysearch -n 20 "Python教程"

# 保持浏览器打开
skysearch -n 20 "关键词" --keep

# 纯搜索(只返回 Bing 结果,不抓页面不排名,快)
skysearch "关键词" --bare -n 5

URL 抓取模式

# 默认:输出纯文本
skysearch --url https://example.com

# 指定输出模式
skysearch --url https://example.com --mode text   # 纯文本(默认)
skysearch --url https://example.com --mode info    # 结构化信息
skysearch --url https://example.com --mode raw     # 原始 HTML

# 保持浏览器打开
skysearch --url https://example.com --keep

作为库使用

import skysearch

# 搜索 + BM25 排名(慢,返回 score)
results = skysearch.search("深度学习", num=10)
# [{'title': ..., 'url': ..., 'score': 12.5, 'snippet': ...}, ...]

# 纯搜索(快,只返回 Bing 结果,不抓页面不排名)
results = skysearch.search_bare("深度学习", num=10)
# [{'title': ..., 'url': ..., 'snippet': ...}, ...]

# URL 抓取
text = skysearch.fetch("https://example.com")
info = skysearch.fetch("https://example.com", mode='info')
raw = skysearch.fetch("https://example.com", mode='raw')

# 单独函数
links = skysearch.fetch_links("https://example.com")
info_dict = skysearch.fetch_info("https://example.com")
raw_dict = skysearch.fetch_raw("https://example.com")

# 搜索 + 抓取一体化
results = skysearch.search_and_fetch("关键词", mode='info')

API 参数说明

search(query, num=10, verbose=False, keep=False, tuple_format=False)

参数 说明 默认值
query 搜索关键词 -
num 结果数量 10
verbose 打印详细过程 False
keep 保持浏览器打开 False
tuple_format 返回元组格式 False

返回:带 BM25 score 的结果列表(较慢,因为要抓页面内容)

search_bare(query, num=10)

参数 说明 默认值
query 搜索关键词 -
num 结果数量 10

返回:纯 Bing 结果列表(快速,不抓页面不排名)

fetch(url, mode='text', keep=False, timeout=10, retry=2)

参数 说明 默认值
url 页面 URL -
mode 输出模式:text info raw text
keep 保持浏览器打开 False
timeout 请求超时秒数 10
retry 重试次数 2

search_and_fetch(query, num=10, mode='text', verbose=False, keep=False, tuple_format=False)

一体化搜索 + 抓取,返回列表包含结果信息和抓取内容。

输出模式说明

模式 说明 适用场景
text 纯文本正文 人类阅读
info 结构化 JSON(url, title, text, links, meta) 数据分析 / agent
raw 原始 HTML 深度解析

技术栈

模块 技术
HTTP 请求 DrissionPage (SessionPage)
动态渲染 DrissionPage (ChromiumPage)
HTML 解析 BeautifulSoup4 + lxml
正文提取 readability-lxml
中文分词 jieba
排序算法 rank-bm25 (BM25Okapi)

项目结构

src/skysearch/
├── __init__.py       # 库入口,导出所有 API
├── cli.py            # 命令行入口
├── search.py         # Bing 搜索
├── ranker.py         # BM25 排序
├── api.py            # 简洁 API 接口
└── fetcher/          # 页面抓取包
    ├── __init__.py
    ├── core.py       # 核心函数
    ├── session.py    # 会话管理
    └── parser.py     # HTML 解析

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

skysearch-0.3.0.tar.gz (11.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

skysearch-0.3.0-py3-none-any.whl (13.2 kB view details)

Uploaded Python 3

File details

Details for the file skysearch-0.3.0.tar.gz.

File metadata

  • Download URL: skysearch-0.3.0.tar.gz
  • Upload date:
  • Size: 11.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.7

File hashes

Hashes for skysearch-0.3.0.tar.gz
Algorithm Hash digest
SHA256 9197b21a337d731f34b6c5269c0b973fa856fb47d819d62934762a5b7e368f7d
MD5 244d13b3f17a016c84fd2e762d934410
BLAKE2b-256 5caa6062c6f894ada44167f2f4298df418a040e9da8e8ff4417fa7a487623490

See more details on using hashes here.

File details

Details for the file skysearch-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: skysearch-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 13.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.7

File hashes

Hashes for skysearch-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6ea177ed48d36898f98fa32128b992e4e30a60cbae05638e85f93a4f507bfab4
MD5 e2cd56dac2bf04d207a1b695a23f1524
BLAKE2b-256 b4e91f106a46c6f32554ab7f29f54a11150b5efe678bcf2f8c627701998596b8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page