JAVA寫(xiě)的爬蟲(chóng)小工具
關(guān)注TJ君,回復(fù)“武功秘籍”免費(fèi)獲取計(jì)算機(jī)寶典書(shū)籍
昨天TJ君的一個(gè)好朋友來(lái)找TJ君幫忙,說(shuō)是想從網(wǎng)上爬取一些公開(kāi)的數(shù)據(jù),其實(shí)就是朋友原來(lái)需要每天自己從網(wǎng)頁(yè)上記錄一些比賽的數(shù)據(jù),用作后續(xù)分析,想偷個(gè)懶,靠程序去實(shí)現(xiàn)。
既然朋友有訴求,TJ君當(dāng)然要想辦法解決,于是想起了曾經(jīng)一個(gè)看到過(guò)的開(kāi)源基于JAVA編寫(xiě)的網(wǎng)頁(yè)解析框架,jsoup,今天也來(lái)和大家一起分享學(xué)寫(xiě)下。

jsoup,是一款可以通過(guò)程序自動(dòng)獲取網(wǎng)頁(yè)數(shù)據(jù)的開(kāi)源項(xiàng)目,項(xiàng)目提供一個(gè)非常方便的API接口,通過(guò)使用HTML5 DOM方法和CSS選擇器來(lái)獲取URL中的數(shù)據(jù),并進(jìn)行提取操作。
jsoup通過(guò)實(shí)現(xiàn)WHATWG HTML5規(guī)范,完成了如下特點(diǎn):
從URL、文件或字符串中提取和解析HTML 使用DOM遍歷或CSS選擇器查找和提取數(shù)據(jù) 調(diào)整HTML元素、屬性和文本 根據(jù)安全列表清除用戶提交的內(nèi)容,以防止XSS攻擊 輸出整潔的HTML
對(duì)于那種雜亂無(wú)章、沒(méi)有固定規(guī)范的網(wǎng)頁(yè),jsoup基本都可以輕松的創(chuàng)建一個(gè)合理的解析樹(shù)。
Document?doc?=?Jsoup.connect("https://en.wikipedia.org/").get();
log(doc.title());
Elements?newsHeadlines?=?doc.select("#mp-itn?b?a");
for?(Element?headline?:?newsHeadlines)?{
??log("%s\n\t%s",?
????headline.attr("title"),?headline.absUrl("href"));
}
案例中解析了Wikipedia的主頁(yè),然后將內(nèi)容解析成DOM,然后選擇了部分標(biāo)題,放入元素列表。當(dāng)然這是最簡(jiǎn)單的示例,實(shí)際運(yùn)用中可能會(huì)碰到更加復(fù)雜的情況以及一些導(dǎo)出數(shù)據(jù)的問(wèn)題,如果感興趣的小伙伴多的話,TJ君后續(xù)結(jié)合朋友的訴求再專(zhuān)門(mén)講解一篇爬蟲(chóng)實(shí)戰(zhàn)。
jsoup的完整開(kāi)源項(xiàng)目如下,想自己先實(shí)踐的小伙伴趕緊上車(chē):
點(diǎn)擊下方卡片,關(guān)注TJ君
回復(fù)“爬取數(shù)據(jù)”,獲取倉(cāng)庫(kù)地址
