首頁 >後端開發 >php教程 >Difbot:爬行視覺機業學習

Difbot:爬行視覺機業學習

Jennifer Aniston
Jennifer Aniston原創
2025-02-20 12:44:11898瀏覽

Difbot:爬行視覺機業學習

鑰匙要點

  • > difbot是一種“視覺學習機器人”,它利用機器學習來爬網和視覺提取數據,比傳統的網絡爬行者提供了對Web內容的更可靠和類似人類的解釋。
  • difbot API完全渲染頁面,包括JavaScript內容,並允許從網頁中提取各種數據類型,包括文本,圖像,視頻和元數據,例如作者或出版日期。
  • difbot的自定義API功能允許用戶調整現有的difbot API或為自定義內容處理創建全新的API,從而從源代碼中提取特定數據元素。
  • 您是否曾經想過,當您共享鏈接時,社交網絡如何進行URL預覽如何?他們怎麼知道要抓住哪些圖像,作為作者引用的圖像,或者在預覽中附加哪些標籤?這一切都在源代碼上爬行了複雜的言論嗎?實際上,通常不是。源中定義的元信息可能是不可靠的,並且聲譽不高的網站通常將其用作關鍵字載體,試圖使搜索引擎排名更高。我們不是人類,在我們面前看到什麼?
  • >
如果您想構建URL預覽片段或新聞聚合器,則在線有許多自動爬網器,包括專有和開源,但是您很少會找到像Visual Machine Learning這樣的利基市場。這正是difbot的本質 - 一個“視覺學習機器人”,它呈現出您完全要求的URL,然後視覺上提取數據,並根據需要從頁面源幫助自己。

涵蓋了一些理論後,在本文中,我們將在Sitepoint的一篇文章之一上進行演示API。

> php庫

difbot的PHP庫有些過時,因此我們不會在此演示中使用它。我們將執行RAW API呼叫,在以後的一些帖子中,我們將構建自己的API互動庫。 >

>儘管您想查看PHP庫,但請參閱此處,如果您對其他語言的庫感興趣,Diffbot有一個目錄。 >

更新,2015年7月:自本文發表以來,已經開發了PHP庫。在此處查看其整個開發過程,或此處的源代碼。

>

> JavaScript內容

>我們在介紹性部分中說,Difbot將請求完全呈現,然後對其進行分析。但是,JavaScript內容呢?如今,網站通常在折疊上方渲染一些HTML,然後完成CSS,JS和動態內容加載。 difbot api可以看到嗎?

實際上,是的。 Diffbot實際上將頁面完整呈現,然後在我的Stackoverflow Q&A中進行視覺檢查。不過,有一些警告,因此請確保您仔細閱讀答案。

>

定價和API Health

difbot具有多個用法層。有一個免費的試用層,可在7天或10000個電話後殺死您的API令牌,以先到者為準。商業代幣可以以各種價格購買,永遠不會到期,但確實有局限性。開源和/或教育項目提供了一種特殊情況,該項目提供了較舊的免費令牌模型 - 每月最大一次,每秒一次,但永遠不會到期。如果您認為自己有資格,您需要直接與他們聯繫。

difbot可以保證高正常運行時間,但有時會發生故障 - 尤其是在束最密集的API中,爬網:爬網。 Crawlbot用於爬網,而不僅僅是單個頁面,因此比其他API的可靠性較低。沒有很多,但是足以在API健康屏幕中引起注意 - 您可以檢查API是否啟動並運行,或者如果您的呼叫運行到問題或返回錯誤500時,您可以查看API是否正在運行,或者當前無法使用。

demo

要準備您的環境,請啟動一個宅基地改進的實例。 >

創建項目

>通過使用Vagrant SSH串入VM,進入代碼文件夾,並執行作曲家創建作曲家創建Prokoxproject Laravel/Laravel Laravel-Prefer-Dist,從而創建一個啟動器Laravel項目。這將使您可以通過http://homestead.app:8000從主機的瀏覽器訪問Laravel問候頁面。

>

添加路線和操作

在app/utaes.php中添加以下途徑:

>

在應用程序/控制器/Homecontroller中添加以下操作:

<span>Route<span>::</span>get('/diffbot', 'HomeController@diffbotDemo');</span>
>如果http://homestead.app:8000/diffbot現在在屏幕上輸出“ HI”,我們已經準備好開始使用API​​。

獲取令牌

<span>public function diffbotDemo() {
</span>        <span>die("hi");
</span>    <span>}</span>
要與DiffBot API進行交互,您需要一個令牌。在其定價頁面上註冊一個。為了進行此演示,讓我們稱之為令牌$令牌,我們將在URL中稱為。在適當的情況下,用您自己的價值替換$令牌。

>安裝guzzle

>我們將使用Guzzle作為HTTP客戶端。這不是必需的,但我建議您通過過去的文章熟悉它。 >

>添加“ guzzlehttp/guzzle”:“ 4.1.*@dev”到您的作曲家。

在項目root中,運行作曲家更新。

>提取文章數據

在第一個示例中,我們將使用Diffbot的默認文章API爬網。為此,我們指的是在解釋工作流程方面做得很好的文檔。將diffbotdemo動作的主體更改為以下代碼:

>

"require": {
		"laravel/framework": "4.2.*",
        "guzzlehttp/guzzle": "4.1.*@dev"
	},
首先,我們設置了令牌。然後,我們定義一個將持有API版本的變量。接下來,由我們創建一個新的guzzle客戶端,我們也給它一個基本URL,因此我們不必在每次提出另一個請求時都將其輸入。

>

接下來,我們通過向API的URL發送get請求來創建一個響應對象,然後以key => value格式中添加一個查詢參數。在這種情況下,我們僅傳遞給令牌和URL,這是最基本的參數。

>

>最後,由於Diffbot API返回JSON數據,我們使用Guzlezle的JSON()方法將其自動解碼為數組。然後,我們非常印刷此數據:

Difbot:爬行視覺機業學習

如您所見,我們很快收回了一些信息。有使用的圖標,已返回文本,標題,甚至語言,日期和HTML的預覽。但是,您會注意到沒有作者。讓我們更改此內容並要求更多值。

>

>如果我們將“字段”參數添加到查詢參數列表中並給它一個“標籤”的值,則DiffBot將嘗試從提供的URL中提取標籤/類別。將此行添加到查詢陣列:

<span>Route<span>::</span>get('/diffbot', 'HomeController@diffbotDemo');</span>
,然後將模具部分更改為:

>

<span>public function diffbotDemo() {
</span>        <span>die("hi");
</span>    <span>}</span>
刷新屏幕現在為我們提供了:

Difbot:爬行視覺機業學習

,但是,本文的源代碼記錄了其他幾個標籤:

>

Difbot:爬行視覺機業學習

>為什麼結果如此不同?這正是由於我們在本文第一段結束時提到的原因:我們人類看到的是優先。 Diffbot是一個視覺學習機器人,因此它的AI從實際渲染內容(它可以看到的內容)中扣除了標籤,而不是從查看源代碼中,該源代碼很容易出於SEO的目的。 但是,如果有人真正需要,是否有一種方法可以從源代碼中獲取標籤?此外,我們可以讓Difbot在Sitepoint文章上識別作者嗎?是的。使用自定義API。

>元標記和具有自定義API

的作者

自定義API是一個功能,您不僅可以通過添加新的字段和內容提取規則來調整現有的DiffBot API,還可以使您創建全新的API(也可以通過專用URL訪問)用於自定義內容處理。

>轉到開發儀表板並使用令牌登錄。然後,進入“自定義API”。激活底部的“創建規則”選項卡,然後輸入我們要爬到URL框中的文章的URL,然後單擊“測試”。您的屏幕應該看起來像這樣:

>您會立即註意到作者字段是空的。您可以通過單擊其旁邊的編輯來調整作者搜索規則,並在打開的實時預覽窗口中找到作者元素,然後單擊它以獲取所需的結果。但是,由於某些人在SitePoint的末端不到完美的CSS,因此很難為Diffbot的API提供一致的作者名稱途徑,尤其是通過單擊元素。相反,手動添加以下規則:.contributor-large .contributor_name a,然後單擊“保存”。

>您會注意到“預覽窗口”現在正確填充了作者字段:>

Difbot:爬行視覺機業學習

實際上,該新規則會自動應用於您令牌的所有站點點鏈接。如果您嘗試預覽另一個SitePoint文章,那麼您會發現Peter Nijssen已成功提取:

Difbot:爬行視覺機業學習

好吧,讓我們進一步修改API。我們需要文章:源代碼中可見的標籤值。這樣做需要一個兩步的過程。

>步驟1:定義集合

>集合正是聽起來像是通過特定規則集獲取的值集合。我們稱我們的集合為“ metatags”,並為其提供以下選擇器:meta [property = Artive:tag]。這意味著“在HTML中查找具有帶有值文章的屬性屬性的所有元元素:tag”。

>步驟2:定義收集字段

>集合字段是集合中的個別條目 - 在我們的情況下,各種標籤。單擊“將自定義字段添加到此集合”,然後添加以下值:>

單擊保存。您將立即可以訪問“結果”窗口中的標籤列表:Difbot:爬行視覺機業學習>

將diffbotdemo()動作的最終輸出更改為: Difbot:爬行視覺機業學習

現在,如果您現在刷新我們測試的URL(http://homestead.app:8000/diffbot),您會注意到作者和元標記值在那裡。這是上述代碼生成的輸出:

>

<span>Route<span>::</span>get('/diffbot', 'HomeController@diffbotDemo');</span>

我們有我們的標籤!

結論

> difbot是Web的強大數據提取器- 無論您是否需要將許多站點合併為單個搜索索引,而無需結合後端,想要構建新聞匯總器,對URL Preview Web組件有一個想法,還是想法想要定期收穫競爭對手公共定價清單的內容,Diffbot可以提供幫助。有了DEAD簡單的API調用和高度結構化的響應,您幾乎沒有時間啟動並運行。在後來的文章中,我們將構建一個全新的API,用於將DIFFBOT與PHP一起使用,並用它重做上述電話。我們還將在Packagist上託管庫,因此您可以輕鬆地將其與作曲家安裝。請繼續關注!

經常詢問有關difbot

的問題(常見問題解答)

> difbot的主要功能是什麼?它旨在以人類的方式理解網頁,使其成為數據提取的強大工具。 Difbot可用於從社交媒體網站,新聞文章,產品頁面等收集數據。這對於需要快速,準確地收集大量數據的企業特別有用。

>

> diffbot的機器學習技術如何工作?

diffbot使用一種已知的人工智能形式來理解的人工智能形式並解釋網頁。它使用算法來分析網頁的結構和內容,然後根據該分析提取相關數據。這允許Diffbot以類似於人類的方式來理解網頁,使其成為數據提取的功能強大的工具。

哪些類型的數據可以difbot提取?

diffbot可以提取提取來自網頁的廣泛數據類型。這包括文本,圖像,視頻等。它還可以提取元數據,例如網頁的作者或發布的日期。這使Difbot成為數據提取的多功能工具,能夠從網絡中收集廣泛的信息。

>

> diffbot的數據提取的準確性如何?

diffbot的數據提取非常準確,這要歸功於它使用機器學習技術。它旨在以人類的方式理解網頁,從而使其能夠準確識別和提取相關數據。但是,像任何工具一樣,它的準確性可以取決於網頁的複雜性和所提取的數據類型。

可以從社交媒體站點中提取數據嗎?

是的,是的,diffbot可以從社交媒體網站中提取數據。這包括Facebook,Twitter和LinkedIn等網站。它可以收集帖子,評論,喜歡和分享等數據,使其成為社交媒體分析和市場研究的有用工具。

> difbot易於使用嗎?

difbot設計為用戶友好,具有簡單的接口和清晰的說明。但是,像任何工具一樣,新用戶可能會有學習曲線。幸運的是,DiFbot提供了一系列資源來幫助用戶開始,包括教程和客戶支持。

difbot可以處理大量數據嗎?數據。對於需要快速,準確地收集和分析大量數據的企業來說,這是一個強大的工具。 Diffbot的機器學習技術允許其快速處理數據,使其成為大數據項目的寶貴工具。

>

哪些行業可以從使用DiffBot?

>中受益。 difbot。這包括營銷,研究,新聞業,電子商務等。任何依賴於網絡收集和分析數據的行業都可以從使用Difbot中受益。

> difbot與其他數據提取工具相比如何?

difbot從其他數據提取工具中脫穎而出。使用機器學習技術。這使其可以以類似於人類的方式來理解和解釋網頁,從而使其成為數據提取的強大而準確的工具。但是,像任何工具一樣,其有效性可以取決於用戶的特定需求。

是DiffBot是可靠的數據提取工具嗎?它被廣泛的企業和行業用於收集和分析網絡的數據。它對機器學習技術的使用使其能夠準確提取相關數據,從而使其成為可信賴的數據提取工具。

以上是Difbot:爬行視覺機業學習的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn