2016-08-31 16 views
2

我想創建一個應用程序,用戶可以從其他網站分享鏈接,並在縮略圖/圖片下方顯示一些小說明(如facebook,twitter,reddit ..),我如何才能識別用戶是否真的張貼了一個鏈接,並自動生成一個縮略圖和描述從該網站,如果它有一個我如何獲得縮略圖/圖片和外國網址的說明,如Facebook或Twitter?

我試圖用laravel來做到這一點!

+0

這個問題與Laravel毫不相干...... – jcorry

回答

1

您將對其他網站的URL發出http請求,並使用響應中的元素來構建預覽。 Facebook贊成爲此目的使用og:元標記。您可以在客戶端或服務器上執行此操作。

如果您需要在瀏覽器中執行此操作,我想您可以在URL可能顯示的字段上使用事件處理程序,查看它的更改事件和模式匹配以獲取URL。當檢測到URL時,您會啓動發出http請求的例程,獲取遠程頁面並解析該頁面中用於構建預覽的特定元素。

1

例如,Google,臉書和推特等大型網站可以從某些網站提取structured data,當這些網站使用諸如schema.org之類的東西提供該網站時。 Schema.org has a github repository有很多這方面的例子和有用的工具。您還可以查看JSON-LD

這就是所謂的MicrodataRDFa。這使計算機可以在網絡上獲取可閱讀的文本,並能夠將它們解析爲結構化,有意義的信息。就像Google在搜索結果中使用的那種類似。

Google Search Structured Data

some implementations in PHP左右浮動,你可以從packagist挖。

所以這裏是您可能在網站上找到的Microdata示例。

<div itemscope itemtype="http://schema.org/Order"> 
    <div itemprop="seller" itemscope itemtype="http://schema.org/Organization"> 
    <b itemprop="name">ACME Supplies</b> 
    </div> 
    <div itemprop="customer" itemscope itemtype="http://schema.org/Person"> 
    <b itemprop="name">Jane Doe</b> 
    </div> 
    <div itemprop="orderedItem" itemscope itemtype="http://schema.org/OrderItem"> 
    Item number: <span itemprop="orderItemNumber">abc123</span> 
    <span itemprop="orderQuantity">1</span> 
    <div itemprop="orderedItem" itemscope itemtype="http://schema.org/Product"> 
     <span itemprop="name">Widget</span> 
    </div> 
    <link itemprop="orderItemStatus" href="http://schema.org/OrderDelivered" />Delivered 
    <div itemprop="orderDelivery" itemscope itemtype="http://schema.org/ParcelDelivery"> 
     <time="expectedArrivalFrom">2015-03-10</time> 
    </div> 
    </div> 
    <div itemprop="orderedItem" itemscope itemtype="http://schema.org/OrderItem"> 
    Item number: <span itemprop="orderItemNumber">def456</span> 
    <span itemprop="orderQuantity">4</span> 
    <div itemprop="orderedItem" itemscope itemtype="http://schema.org/Product"> 
     <span itemprop="name">Widget accessories</span> 
    </div> 
    <link itemprop="orderItemStatus" href="http://schema.org/OrderInTransit" />Shipped 
    <div itemprop="orderDelivery" itemscope itemtype="http://schema.org/ParcelDelivery"> 
     <time itemprop="expectedArrivalFrom">2015-03-15</time> 
     <time itemprop="expectedArrivalUntil">2015-03-18</time> 
    </div> 
    </div> 
</div> 

如果你打的網址file_get_contents('http://www.example.com/somepage')和使用模式的PHP實現解壓這個你可以導出數據的結構,任何一種模式的。像圖片,文章的描述,問題,人物,地點,產品等...

沒有這些信息,你基本上只是在PHP中解析DOM,如DOMDocument,猜測它的含義。它可能根本沒有明智的結構,但你可以在HTML中查看諸如<title>標籤的東西,例如獲取非常基本的信息。

相關問題