我需要幫助解決問題。我需要一個程序,在給定網站的情況下,找到並提取「主要」圖片,即代表網站的圖片。 (要說這是最大或第一個圖片有時但並非總是如此)。如何在網站中查找並提取「主」圖像
我該如何解決這個問題?有沒有可以幫助我的圖書館? 謝謝!
我需要幫助解決問題。我需要一個程序,在給定網站的情況下,找到並提取「主要」圖片,即代表網站的圖片。 (要說這是最大或第一個圖片有時但並非總是如此)。如何在網站中查找並提取「主」圖像
我該如何解決這個問題?有沒有可以幫助我的圖書館? 謝謝!
OPTION 1
你可以結帳Goose。它與Pocket和Readability的功能類似,即嘗試使用一組啓發式從給定網頁中提取主文章。它顯然也可以從那篇文章中提取主要圖像,但這有點讓人失望,所以每次都有60%的時間工作。
它曾經是一個Java項目,但改寫爲Scala。
自述
鵝會嘗試提取以下信息:
的文章
- 正文
- 文章的主要圖像
- 任何的Youtube/Vimeo的電影嵌入文章
- 元描述
- Meta標籤
- 發佈日期
嘗試在這裏:http://jimplush.com/blog/goose
OPTION 2
你可以使用Java包裝(例如GhostDriver)用於運行無頭瀏覽器,如PhantomJS。然後,獲取該網站並找到尺寸最大的元素img
。 This GhostDriver test case顯示瞭如何查詢元素的DOM並獲取渲染大小。
OPTION 3
使用圖書館像jsoup,可幫助您解析HTML。然後從img
標籤中獲取src
屬性的值。請求您爲圖像找到的每個URL並測量其大小。尺寸最大的那個可能是網站的主要形象。
您需要人工智能才能這樣做,即計算機視覺。 它太大,不適合答案。 This link might help
如果你是概率和貝葉斯法則經驗的數學家,那麼你可以採取所謂的圖像處理和計算機視覺單位。
如果您正在尋找可用的軟件要使用check this out...
This stackoverflow thread might help...
有這個軟件叫moodstocks這可能會有幫助。
另一種解決方案是首先提取用於社交媒體共享的元標記,如果它們存在,您很幸運,否則您可以嘗試其他解決方案。
<meta property="og:image" content="http://www.example.com/image.jpg"/>
<meta name="twitter:image" content="http://www.example.com/image.jpg">
<meta itemprop="image" content="http://www.example.com/image.jpg">
如果您yousing JSOUP代碼將是這樣的:
String imageUrlOpenGraph = document.select("meta[property=og:image]").stream()
.findFirst()
.map(doc -> doc.attr("content").trim())
.orElse(null);
String imageUrlTwitter = document.select("meta[name=twitter:image]").stream()
.findFirst()
.map(doc -> doc.attr("content").trim())
.orElse(null);
String imageUrlGooglePlus = document.select("meta[itemprop=image]").stream()
.findFirst()
.map(doc -> doc.attr("content").trim())
.orElse(null);
ImageResolver可以爲你做的,而不需要服務器端交互的,除了少量代理腳本。
[jsoup](http://jsoup.org/).... – MadProgrammer