我無法找到任何好的網頁抓取基於Java的API。我需要刮的網站也不提供任何API;我想用一些pageID迭代所有的網頁,並在他們的DOM樹中提取HTML標題/其他東西。用Java抓取網頁
除了網頁抓取以外,還有其他方法嗎?
感謝
我無法找到任何好的網頁抓取基於Java的API。我需要刮的網站也不提供任何API;我想用一些pageID迭代所有的網頁,並在他們的DOM樹中提取HTML標題/其他東西。用Java抓取網頁
除了網頁抓取以外,還有其他方法嗎?
感謝
提取標題並不難,而且你有很多選擇,在這裏搜索Stack Overflow上的「Java的HTML解析器」。其中之一是Jsoup。
可以導航使用DOM如果知道頁面結構的頁面,看到 http://jsoup.org/cookbook/extracting-data/dom-navigation
這是一個好的圖書館,我已經在我的最後一個項目中使用它。
查看HTML解析器,如TagSoup,HTMLCleaner或NekoHTML。
最好的辦法是使用Selenium網絡驅動器,因爲它
慢。不像HtmlUnit那樣打網頁,但有時你不想打得太快。
Htmlunit速度很快,但在處理Javascript和AJAX時很糟糕。
的HtmlUnit可以用來做網頁刮,它支持調用頁面,填寫&提交表單。我在我的項目中使用了這個。這是一個很好的網絡抓取Java庫。 read here for more
對於Java的機械化將非常適合這一點,並且Wadjy Essam提到它使用JSoup作爲HMLT。 mechanize是一個支持導航,表單提交和頁面抓取的階段性HTTP/HTML客戶端。
http://gistlabs.com/software/mechanize-for-java/(和GitHub的這裏https://github.com/GistLabs/mechanize)
使用網頁抓取工具,您可以從網頁中提取有用的內容,並將其轉換爲適用的任何格式。
WebScrap ws= new WebScrap();
//set your extracted website url
ws.setUrl("http://dasnicdev.github.io/webscrap4j/");
//start scrap session
ws.startWebScrap();
現在你的網絡報廢會話啓動,並準備報廢或使用webscrap4j library提取Java數據。
標題:
System.out.println("-------------------Title-----------------------------");
System.out.println(ws.getSingleHTMLTagData("title"));
爲口號:
System.out.println("-------------------Tagline-----------------------------");
System.out.println(ws.getSingleHTMLScriptData("<h2 id='project_tagline'>", "</h2>"));
對於所有錨標記:
System.out.println("-------------------All anchor tag-----------------------------");
al=ws.getImageTagData("a", "href");
for(String adata: al)
{
System.out.println(adata);
}
用於圖像數據:
System.out.println("-------------------Image data-----------------------------");
System.out.println(ws.getImageTagData("img", "src"));
System.out.println(ws.getImageTagData("img", "alt"));
用於UL利內容:
System.out.println("-------------------Ul-Li Data-----------------------------");
al=ws.getSingleHTMLScriptData("<ul>", "</ul>","<li>","</li>");
for(String str:al)
{
System.out.println(str);
}
對於完整的源代碼檢查此tutorial。
也有短途的Java Web刮& JSON查詢 - http://jaunt-api.com
謝謝,它是一個很好的庫,沒有依賴關係,所以它非常輕便。此外,它是無頭的,所以它不需要瀏覽器(我曾遇到** Selenium **開放Chrome的問題,我根本無法使用** HtmlUnit **)。 ** Selenium **必須更現實一些,但是這個庫可能在大多數情況下都能達到目的,而且設置起來非常簡單:添加依賴關係,你很好。 – 2014-05-31 17:13:24
確實是非常出色的圖書館。易於安裝和強大的正則表達式支持。 doc.select( 「利[ID^= cosid_]」)。涼。 – EMM 2016-07-19 15:21:13
我最近開放了我的網頁抓取框架,它不僅可以使用Jsoup和HtmlUnit解析文檔,還可以爲您處理並行處理,並且可以管理大量的代理服務器池(如果需要):https://github.com/subes/invesdwin-webproxy – subes 2017-06-09 18:57:44