1. 背景

最近本qiang~关注了一个开源项目Scrapegraph-ai,是关于网页爬虫结合LLM的项目,所以想一探究竟,毕竟当下及未来,LLM终将替代以往的方方面面。

这篇文章主要介绍下该项目,并基于此项目实现一个demo页面,页面功能是输入一个待爬取的网页地址以及想要从网页中抽取的内容,最后点击按钮实现网页抓取及解析。

2. 模块简介

2.1 Scrapegraph-ai

该项目是一个网页爬虫的python包,使用LLM和直接图逻辑(direct graph logic)来为网页和本地文档(XML, HTML, JSON)创建爬取管道(pipeline)。

2.2 GPT-3.5免费申请,且国内可访问

GPT3.5-Turbo免费申请可以在开源项目GPT_API_free进行访问,其中该项目有免费申请的地址,以及网页插件、桌面应用安装等教程,在日志工作学习中,使用起来非常丝滑~

其次,国内访问gpt3.5可以基于该项目提供的代理: https://api.chatanywhere.tech/v1来实现访问。

3. 实战

3.1 安装第三方包

# 网页开发包,和Gradio类似
pip install streamlit
# 爬虫相关包
pip install playwright
playwright install
playwright install-deps # 安装依赖

3.2 设置gpt3.5代理环境变量

import os
os.environ['OPENAI_API_BASE'] = 'https://api.chatanywhere.tech/v1'
OPEN_API_KEY = 'sk-xxxxx'

3.3 创建网页元素

import streamlit as st

st.title('网页爬虫AI agent')
st.caption('该app基于gpt3.5抓取网页信息') url = st.text_input('属于你想抓取的网页地址URL')
user_prompt = st.text_input('输入你想要从该网页获取知识的prompt')

3.4 基于scrapegraph-ai包构建图配置以及创建图逻辑

from scrapegraphai.graphs import SmartScraperGraph

# 图配置信息,默认调用gpt3.5,其次embedding模型未设置,但阅读源码后,可以发现默认走的是openai的embedding模型
graph_config = {
'llm': {
'api_key': OPEN_API_KEY,
'model': 'gpt-3.5-turbo',
'temperature': 0.1
}
} # 创建直接图逻辑
smart_scraper_graph = SmartScraperGraph(
prompt=user_prompt, # 用户输入的prompt
source=url, # 用户输入的url
config=graph_config
) # 增加一个按钮进行爬取、解析及页面渲染
if st.button('爬取'):
result = smart_scraper_graph.run()
st.write(result)

3.5 运行启动

streamlit run scrape_web_openai.py

3.6 底层原理

通过研读SmartScraperGraph源码,底层直接图逻辑的原理如下图所示。分为抓取、解析、RAG、答案生成,并默认以json格式输出

4. 效果

4.1 新闻类

网址:ps://news.sina.com.cn/w/2024-05-20/doc-inavwrxq4965190.shtml

4.2 公众号

https://mp.weixin.qq.com/s/rFYXKiedqmVo5URDxlbHzA

针对一些简单的网页如新闻网页等,可以正常爬取,但响应时间在10s以上,针对一些复杂的页面,如包含鉴权、反爬机制等,可能无法正常爬取。

5. 总结

一句话足矣~

本文主要是通过Scrapegraph-ai集成gpt3.5实现一个简单的网页爬取并解析的demo应用,其中涉及到gpt3.5免费申请,Scrapegraph-ai底层原理简介,demo应用源码等。

之后会写一篇关于Qwen7B和BGE的相似度模型,与Scrapegraph-ai集成的demo应用,敬请期待 ~

6. 参考

1. Scrapegraph-ai: https://github.com/VinciGit00/Scrapegraph-ai

2. GPT_API_free: https://github.com/chatanywhere/GPT_API_free

LLM实战:当网页爬虫集成gpt3.5的更多相关文章

  1. Python 网页爬虫 & 文本处理 & 科学计算 & 机器学习 & 数据挖掘兵器谱(转)

    原文:http://www.52nlp.cn/python-网页爬虫-文本处理-科学计算-机器学习-数据挖掘 曾经因为NLTK的缘故开始学习Python,之后渐渐成为我工作中的第一辅助脚本语言,虽然开 ...

  2. [resource-]Python 网页爬虫 & 文本处理 & 科学计算 & 机器学习 & 数据挖掘兵器谱

    reference: http://www.52nlp.cn/python-%e7%bd%91%e9%a1%b5%e7%88%ac%e8%99%ab-%e6%96%87%e6%9c%ac%e5%a4% ...

  3. 实战项目:EMOS集成邮件平台

    实战项目:EMOS集成邮件平台用户邮箱系统:http://mailAnonymous.cn/邮件服务器管理平台http://mailAnonymous.cn/extman 项目需求:随着公司规模不断扩 ...

  4. Python带你轻松进行网页爬虫

    前不久DotNet开源大本营通过为.NET程序员演示如何在.NET下使用C#+HtmlAgilityPack+XPath进行网页数据的抓取,从而为我们展示了HtmlAgilitypack利器的优点和使 ...

  5. 【Python】Python 网页爬虫 & 文本处理 & 科学计算 & 机器学习 & 数据挖掘兵器谱

    本文转载自:https://www.cnblogs.com/colipso/p/4284510.html 好文 mark http://www.52nlp.cn/python-%E7%BD%91%E9 ...

  6. 零基础入门Python实战:四周实现爬虫网站 Django项目视频教程

    点击了解更多Python课程>>> 零基础入门Python实战:四周实现爬虫网站 Django项目视频教程 适用人群: 即将毕业的大学生,工资低工作重的白领,渴望崭露头角的职场新人, ...

  7. 《实战Python网络爬虫》- 感想

    端午节假期过了,之前一直在做出行准备,后面旅游完又休息了一下,最近才恢复状态. 端午假期最后一天收到一个快递,回去打开,发现是微信抽奖中的一本书,黄永祥的<实战Python网络爬虫>. 去 ...

  8. Jmeter(四十五) - 从入门到精通高级篇 - Jmeter之网页爬虫-上篇(详解教程)

    1.简介 上大学的时候,第一次听同学说网页爬虫,当时比较幼稚和懵懂,觉得就是几只电子虫子爬在网页上在抓取东西.后来又听说写代码可以实现网页爬虫,宏哥感觉高大上,后来工作又听说,有的公司做爬虫被抓的新闻 ...

  9. cURL 学习笔记与总结(2)网页爬虫、天气预报

    例1.一个简单的 curl 获取百度 html 的爬虫程序(crawler): spider.php <?php /* 获取百度html的简单网页爬虫 */ $curl = curl_init( ...

  10. c#网页爬虫初探

    一个简单的网页爬虫例子! html代码: <head runat="server"> <title>c#爬网</title> </head ...

随机推荐

  1. 重磅官宣,OpenHarmony技术峰会来了

      技术构筑万物智联 创新使能行业发展 2月25日 第一届开放原子开源基金会OpenHarmony技术峰会即将启幕 众多行业大咖齐聚深圳 开启一场"技术硬核"探索盛宴 亮点拉满,我 ...

  2. TeamViewer 9发布-在Linux下安装运行

    TeamViewer 9发布-在Linux下安装运行 来源:Linux中国  作者:未知 关注我们:    这篇指南介绍了怎么样在 RedHat. CentOS. Fedora 和 Debian. U ...

  3. 构建RAG应用-day01: 词向量和向量数据库 文档预处理

    词向量和向量数据库 词向量(Embeddings)是一种将非结构化数据,如单词.句子或者整个文档,转化为实数向量的技术. 词向量搜索和关键词搜索的比较 优势1:词向量可以语义搜索 比如百度搜索,使用的 ...

  4. 对中间件概念的理解,如何封装 node 中间件

    一.是什么 中间件(Middleware)是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务(功能),衔接网络上应用系统的各个部分或不同的应用,能够达到资源共享.功能共享的目的 在 ...

  5. SQL case when then end

    SQL case when then end sql中的返回值可以使用case when then end来进行实现 SELECT s.s_id, CASE s.s_name WHEN '1' THE ...

  6. 【笔记】go语言--切片的操作

    go语言--切片的操作 接上篇切片的概念开始 //Slice添加元素 arr := [...]int{0,1,2,3,4,5,6,7} s1 := arr[2:6] s2 := s1[3:5]//[5 ...

  7. 如何合理使用 CPU 管理策略,提升容器性能?

    ​简介:CPU Burst.拓扑感知调度是阿里云容器服务 ACK 提升应用性能的两大利器,它们解决了不同场景下的 CPU 资源管理,可以共同使用.点击下文,查看详情! 作者:张佐玮(佑祎) 前言 在云 ...

  8. Flink 如何实时分析 Iceberg 数据湖的 CDC 数据

    简介: 数据湖的架构中,CDC 数据实时读写的方案和原理 本文由李劲松.胡争分享,社区志愿者杨伟海.李培殿整理.主要介绍在数据湖的架构中,CDC 数据实时读写的方案和原理.文章主要分为 4 个部分内容 ...

  9. 日志服务SLS 助力识货 APP,解决业务数据采集查询监控问题

    简介: 日志服务SLS 助力识货 APP,解决业务数据采集查询监控问题 更多存储标杆案例欢迎点击下方链接查看 阿里云存储标杆案例样板间 公司介绍识货APP是虎扑体育旗下的导购应用,致力于为广大年轻用户 ...

  10. 长文解析:作为容器底层技术的半壁江山, cgroup如何突破并发创建瓶颈?

    ​简介: io_uring 作为一种新型高性能异步编程框架,代表着 Linux 内核未来的方向,当前仍处于快速发展中.阿里云联合 InfoQ 发起<io_uring 介绍及应用实践>的技术 ...