LLM實戰:當網頁爬蟲集成gpt3.5

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 stst.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, # 用戶輸入的promptsource=url, # 用戶輸入的urlconfig=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


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/14478.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/14478.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/14478.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java并發: 鎖和同步

在Java并發: 面臨的挑戰那一篇中我們提到鎖和同步是實現并發安全(可見性/原子性)的方法之一。這一章我們來講講Java中的鎖和同步的各種工具,包括: LockSupportAbstractQueuedSynchronizerJava內置的鎖實現 1. LockSupport LockSupport是基于Unsafe的park/unpark實…

智能禁區監控:計算機視覺在人員禁區闖入檢測中的應用

基于視覺分析的人員禁區闖入行為檢測算法主要依賴于計算機視覺技術和深度學習算法。這些技術結合高性能的攝像頭和圖像處理硬件,實現了對監控區域內人員行為的自動識別和分析。具體來說,這種檢測算法利用攝像頭捕捉的視頻數據,通過深度學習模…

Kubernetes 應用滾動更新

Kubernetes 應用版本號 在 Kubernetes 里,版本更新使用的不是 API 對象,而是兩個命令:kubectl apply 和 kubectl rollout,當然它們也要搭配部署應用所需要的 Deployment、DaemonSet 等 YAML 文件。 在 Kubernetes 里應用都是以 …

nssctf——web

[SWPUCTF 2021 新生賽]gift_F12 1.打開環境后,這里說要900多天會有flag,這是不可能的 2.f12查看源碼,然后在html中查找flag (在最上方的欄目中,或者按ctrlf) [SWPUCTF 2021 新生賽]jicao 1.打開環境是一段…

Fragment問題:java.lang.IllegalStateException

錯誤提示: Process: com.example.accountapp, PID: 3987 java.lang.IllegalStateException: Could not execute method for android:onClick …

Vue速成學習筆記

這兩天速成了一下Vue,在這里記錄一下相關的筆記,之后有時間詳細學Vue的時候再來回顧一下! 一、Vue理解 1、Vue的核心特征:雙向綁定。 在網頁中,存在視圖和數據。在Vue之前,需要使用JavaScript編寫復雜的邏…

web前端面試題

web前端面試題 1、前端如何實現優化性能 (1)減少網絡時間 ①使用DNS緩存技術 ? ②減少需要傳輸的文件尺寸 ? ③加快文件傳輸速度 (2)減少發送的請求數量 ①利用瀏覽器緩存 ? ②使用合并的圖片文件 (3)提高瀏覽器下載的并發度 ①JS文件放在HTML文檔最后 ? ②使用多個域名 (…

音視頻及H264/H256編碼相關原理

一、音視頻封裝格式原理: 我們播放的視頻文件一般都是用一種封裝格式封裝起來的,封裝格式的作用是什么呢?一般視頻文件里不光有視頻,還有音頻,封裝格式的作用就是把視頻和音頻打包起來。 所以我們先要解封裝格式&#…

谷歌上架,個人號比企業號好上?“14+20”封測如何解決,你知道了嗎

在Google Play上架應用,對開發者而言,既是挑戰也是機遇。隨著谷歌政策的不斷更新,特別是要求2023年11月13日后注冊的個人開發者賬號在發布正式版應用前,必須經過20人連續14天的封閉測試。 這一政策的改變使得許多開發者開始考慮使…

什么是物聯網通信網關?-天拓四方

在信息化、智能化的時代,物聯網技術的廣泛應用正在逐漸改變我們的生活方式。物聯網通過各種傳感器和設備,將現實世界與數字世界緊密相連,從而實現智能化、自動化的生活和工作方式。作為物聯網生態系統中的重要組成部分,物聯網通信…

【數據結構】堆(Heep)

???專欄:數據結構 🧑?🎓個人主頁:SWsunlight 目錄 一、堆: 定義: 性質: 大、小根堆: 二、實現堆(完全二叉樹): 前言: …

四、Filter

Filter簡介 Filter 的基本功能是對Servlet容器調用Servlet的過程進行攔截,從而在Servlet進行響應處理的前后實現一些特殊的功能.在Servlet API 中定義了三個接口類來供開發人員編寫Filter 程序:Filter,FilterChain,FilterConfigFilter 程序是一個實現了…

Spring:Spring事務失效的各種場景以及解決方法

一、前言 Spring事務是指Spring框架中提供的事務管理功能,它可以幫助開發者簡化事務管理的復雜性,提高代碼的可維護性和可擴展性。本文將總結并分析Spring事務失效的各種場景,幫助你全面了解事務失效的原因和解決方案。 二、Spring事務失效的…

51匯編--數碼管顯示

;將內部RAM30H~32H單元中存儲的6位十進制數顯示在6個數碼管上。 ;要求編寫將一個內存單元中的壓縮BCD碼轉換為兩個七段顯示碼的子程序和 ;延時子程序。不允許在程序中給30H、31H和32H單元賦值,要通過存 ;儲器窗口賦值。嘗試改變點亮數碼管的時間&#xf…

Linux軟硬鏈接及動靜態庫

軟硬鏈接與動靜態庫 軟連接 創建鏈接的方法: ln -s test1.txt test2.txt 其中ln 是link(鏈接),-s 是soft(軟),后者鏈接前者。 此時打開test2.txt,發現其中內容與test.txt一致。那么軟連接到底建立了什么聯系?…

輕松購物,盡在購物網

在忙碌的生活中,想要找到心儀的商品,卻總是苦于沒有時間和精力去實體店挑選?別擔心,購物網為您提供一站式的購物體驗。無論是時尚服飾、家居用品,還是美食特產,這里都能滿足您的需求。只需輕輕一點&#xf…

監聽element-ui表格滾動事件

當element-ui表格高度寫死之后,表格內容超出高度就會在右側顯示滾動條,監聽滾動事件 首先給表格加ref,ref"refTable" 然后在mounted生命周期里寫監聽事件 mounted() {this.$refs.refTable.$el.onwheel (e) > {console.log(滾…

深入解析線程上下文切換的原理與優化策略

深入解析線程上下文切換的原理與優化策略 定義觸發條件線程上下文切換的過程線程上下文切換的開銷減少上下文切換的方法示例代碼總結 線程上下文切換(Thread Context Switch)是操作系統調度機制的重要組成部分。它涉及保存當前線程的狀態并恢復新線程的狀…

vue中使用ant的rangePicker設置禁選時間和時間格式

<a-range-pickerstyle"width: 100%":disabled-date"disabledDate"v-model:value"time"valueFormat"YYYY-MM-DD" />valueFormat設置時間格式YYYY-MM-DD 通過dayjs獲取時間&#xff0c;return過濾后的時間 const disabledDate (…

安裝apex時遇到的問題

Apex是混合精度庫&#xff0c;安裝過程中常常出現各種問題&#xff0c;在此記錄一下 首先&#xff0c;不能使用pip install apex,這是兩個完全不同的庫&#xff0c;需要去官網下載 其次&#xff0c;參考官網安裝時可能會報錯&#xff1a;could not build wheels for apex, whic…