通过 Streamlit 我们可以使用 Meta 最新的开源大模型 Llama 3.2 轻松搭建自己的 AI 网络爬虫,通过自然语言就能抓取各种网络信息。
搭建环境
在开始搭建之前,请确保具备以下条件:
- 在本地电脑上安装 Python(建议使用 3.7 版本或更高版本)
- 下载并安装 Ollama,并确保 Llama 3.2 能够正常运行
- 对 Python 编程有基本的了解,选择一个代码编辑器(建议使用 VS Code 或 PyCharm)
安装 AI 网络爬虫
1. 克隆 GitHub 仓库
git clone https://github.com/Shubhamsaboo/awesome-llm-apps.git
2. 进入 web_scrapping_ai_agent 文件夹
cd web_scrapping_ai_agent
3. 安装所需的依赖
pip install -r requirements.txt
4. 检查是否能在本地的 11434 端口运行 Ollama
创建Streamlit应用程序
创建一个新的文件 local_ai_scrapper.py,并添加以下代码
导入所需库
在文件的顶部添加
- Streamlit 用于构建网页应用
- Scrapegraph AI 用于创建与 LLM 的抓取管道
import streamlit as st from scrapegraphai.graphs import SmartScraperGraph
设置 Streamlit 应用
Streamlit 允许我们创建用户界面。对于这个应用,我们将使用 st.title() 和 st.caption() 添加标题和副标题
st.title("AI 网络爬虫") st.caption("此应用允许您使用 Llama 3.2 抓取网站")
配置 SmartScraperGraph
- 将 LLM 设置为 ollama/llama3,并在本地服务,输出格式为 JSON。
- 将嵌入模型设置为 ollama/nomic-embed-text
graph_config = { "llm": { "model": "ollama/llama3.2", "temperature": 0, "format": "json", # Ollama 需要明确指定格式 "base_url": "http://localhost:11434", # 设置 Ollama URL }, "embeddings": { "model": "ollama/nomic-embed-text", "base_url": "http://localhost:11434", # 设置 Ollama URL }, "verbose": True, }
获取网站 URL 和用户提示
- 使用 st.text_input() 获取要抓取的网站 URL。
- 使用 st.text_input() 获取用户提示,指定要从网站抓取的内容。
url = st.text_input("请输入您想要抓取网站的 URL") user_prompt = st.text_input("您希望 AI 爬虫从网站抓取什么?")
初始化 SmartScraperGraph
使用用户提示、网站 URL 和图形配置创建 SmartScraperGraph 实例。
smart_scraper_graph = SmartScraperGraph( prompt=user_prompt, source=url, config=graph_config )
抓取网站并显示结果
- 使用 st.button() 添加一个“抓取”按钮。
- 当按钮被点击时,运行 SmartScraperGraph,并使用 st.write() 显示结果。
if st.button("抓取"): result = smart_scraper_graph.run() st.write(result)
运行网络爬虫应用
进入项目文件夹,运行以下命令
streamlit run local_ai_scrapper.py
Streamlit 会提供一个本地 URL(通常是 http://localhost:8501)。通过浏览器打开链接就可以用它抓取我们想要的网络信息了。
ScrapeGraphAI 项目地址
评论(4)
UnboundLocalError: cannot access local variable 'browser' where it is not associated with a value
出现这个我该从哪方面入手修改呢?
你先查一下“browser”变量是否之前已经赋值过了?如果 browser”是一个函数内变量,你可以在它前面加一个“global"。如果还是无法解决,你把定义和使用 browser 变量前后代码发一下。
好的谢谢
不客气