2012-07-24 29 views
9

我不確定如何定義它,但基本上我想從給定的URL檢索相關圖像和文本摘要。從URL獲取相關圖像和摘要

例如 - 當用戶將鏈接粘貼到Facebook上的共享框時,它會立即從文章本身和相關圖像中獲取文章標題和/或短文本塊。 它從來沒有得到錯誤的形象,如網站的標誌或文章本身的文字...

同樣適用於Google+和其他社交網絡或類似服務。

我開始時假設我需要使用下面的代碼讀取頁面內容,我如何確定哪個圖像是相關的(來自文章正文)和哪些文本是文章文本?

URL oracle = new URL("http://www.oracle.com/"); 
BufferedReader in = new BufferedReader(
    new InputStreamReader(oracle.openStream())); 

String inputLine; 
while ((inputLine = in.readLine()) != null) 
    System.out.println(inputLine); 

in.close(); 

我當然不是要求代碼在這裏(除非有人例如片段,並願意分享),但更多的是如何,甚至接近這個......我從哪裏開始?

任何幫助將不勝感激!

+1

也許它會幫助你http://stackoverflow.com/questions/5482897/extract-information-from-link-like-facebook-wall – logcat 2012-07-24 16:04:35

+0

謝謝,將看看它,但它似乎相當有限。我認爲有一些更通用的方式來做到這一點,而不是Facebook如何做到這一點。 – 2012-07-24 18:06:15

+0

嗨汽車,你有沒有設法做到這一點?我真的很感激這個話題的更新。謝謝! – Cos 2012-10-26 15:59:19

回答

9

我可以推薦Boilerpipe用於原始文本提取,它使用一些高級算法來查找相關文本並移除它周圍的樣板(如菜單,頁腳等)。

關於圖片,除了使用meta標籤,如註釋中已經提到的,您可以使用html解析器(如htmlparser)來提取所有「img」標籤,然後使用一些啓發式來選擇最好的。我使用了一些啓發,如:

  • 沒有圖片小於30像素,它們通常是圖標或廣告跟蹤圖像
  • 平方,這樣就避免了統治者和類似的東西
  • 沒有標準所知的旗幟尺寸越好
  • 在頁面的樣板提取的更好
  • 近內容(這是硬)

我一直在使用較高這是一段時間的頁面抓取生產的啓發式方法,並且它們給出了很好的結果。

但是,要正確應用這些規則,您可能需要下載圖像以獲取其大小和/或解析樣式屬性。

如果您打算運行此服務器端,作爲頁面抓取服務,那就沒關係。如果您打算在Android設備上執行此操作,則可能會太重。

+0

謝謝你的詳細解答。這些信息對我來說是一個很好的開始。我很想知道Google+ Android應用程序似乎在爲鏈接提供圖像和信息,但也許他們在服務器端執行它...太糟糕了,它的混淆和不開源:) – 2012-07-24 19:08:35