中文 | English
本项目提供了一个强大的网页抓取工具,它使用 FastAPI、SearXNG 和 Browserless 抓取搜索结果并将其转换为 Markdown 格式。该工具包括使用代理进行网页抓取的功能,并能高效地将 HTML 内容转换为 Markdown。现在还支持使用 AI 进行搜索结果过滤。替代方案包括 Jina.ai、FireCrawl AI、Exa AI 和 2markdown,为开发人员提供各种网页抓取和搜索引擎解决方案。
- Jina.ai: 为开发人员提供的强大搜索引擎。
- FireCrawl AI: 为开发人员提供的网页抓取 API。
- Exa AI: 为开发人员提供的网页抓取 API。
- 2markdown: 将 HTML 转换为 Markdown 的网页抓取工具。
- FastAPI: 用于构建 Python API 的现代、快速 Web 框架。
- SearXNG: 开源的互联网元搜索引擎。
- Browserless: 一个 Web 浏览器自动化服务。
- Markdown 输出: 将 HTML 内容转换为 Markdown 格式。
- 代理支持: 使用代理进行安全和匿名抓取。
- AI 集成(Reranker AI): 使用 AI 过滤搜索结果以提供最相关的内容。
- YouTube 转录: 获取 YouTube 视频转录。
- 图片和视频搜索: 使用 SearXNG 获取图片和视频结果。
确保已安装以下内容:
- Python 3.11
- Virtualenv
- Docker
您可以使用 Docker 简化设置过程。请按照以下步骤操作:
-
克隆仓库:
git clone https://github.com/essamamdani/search-result-scraper-markdown.git cd search-result-scraper-markdown
-
运行 Docker Compose:
docker compose up --build
通过此设置,如果更改 .env
或 main.py
文件,则不再需要重启 Docker。更改将自动重新加载。
按照以下步骤进行手动设置:
-
克隆仓库:
git clone https://github.com/essamamdani/search-result-scraper-markdown.git cd search-result-scraper-markdown
-
创建并激活虚拟环境:
virtualenv venv source venv/bin/activate
-
安装依赖项:
pip install -r requirements.txt
-
在根目录中创建一个 .env 文件,内容如下:
SEARXNG_URL=http://searxng:8080 BROWSERLESS_URL=http://browserless:3000 TOKEN=your_browserless_token_here # 用您的实际令牌替换 # PROXY_PROTOCOL=http # PROXY_URL=your_proxy_url # PROXY_USERNAME=your_proxy_username # PROXY_PASSWORD=your_proxy_password # PROXY_PORT=your_proxy_port REQUEST_TIMEOUT=30 # 用于搜索结果过滤的 AI 集成 FILTER_SEARCH_RESULT_BY_AI=true AI_ENGINE=groq # GROQ GROQ_API_KEY=yours_groq_api_key_here GROQ_MODEL=llama3-8b-8192 # OPENAI # OPENAI_API_KEY=your_openai_api_key_here # OPENAI_MODEL=gpt-3.5-turbo-0125
-
运行 SearXNG 和 Browserless 的 Docker 容器:
./run-services.sh
-
启动 FastAPI 应用程序:
uvicorn main:app --host 0.0.0.0 --port 8000
要执行搜索查询,请向根端点 /
发送带有查询参数 q
(搜索查询)、num_results
(结果数量)和 format
(以 JSON 或默认 Markdown 格式获取响应)的 GET 请求。
示例:
curl "http://localhost:8000/?q=python&num_results=5&format=json" # 获取 JSON 格式
curl "http://localhost:8000/?q=python&num_results=5" # 默认 Markdown 格式
要获取并转换特定 URL 的内容为 Markdown,请向 /r/{url:path}
端点发送 GET 请求。
示例:
curl "http://localhost:8000/r/https://example.com&format=json" # 获取 JSON 格式
curl "http://localhost:8000/r/https://example.com" # 默认 Markdown 格式
要获取图片搜索结果,请向 /images
端点发送带有查询参数 q
(搜索查询)和 num_results
(结果数量)的 GET 请求。
示例:
curl "http://localhost:8000/images?q=puppies&num_results=5"
要获取视频搜索结果,请向 /videos
端点发送带有查询参数 q
(搜索查询)和 num_results
(结果数量)的 GET 请求。
示例:
curl "http://localhost:8000/videos?q=cooking+recipes&num_results=5"
本项目使用 Geonode 代理进行网页抓取。您可以使用 我的 Geonode 推荐链接 开始使用他们的代理服务。
- FastAPI: 用于构建 Python API 的现代、快速 Web 框架。
- SearXNG: 开源的互联网元搜索引擎。
- Browserless: 一个 Web 浏览器自动化服务。
- Markdown 输出: 将 HTML 内容转换为 Markdown 格式。
- 代理支持: 使用代理进行安全和匿名抓取。
- AI 集成(Reranker AI): 使用 AI 过滤搜索结果以提供最相关的内容。
- YouTube 转录: 获取 YouTube 视频转录。
- 图片和视频搜索: 使用 SearXNG 获取图片和视频结果。
有关代码的详细说明,请访问 这里 的文章。
本项目根据 MIT 许可证授权。有关详细信息,请参阅 LICENSE 文件。
Essa Mamdani - essamamdani.com
欢迎贡献!请随时提交 Pull Request。