jsoup 是一款 Java 的 HTML 解析器,可直接解析某個 URL 地址、HTML 文本內容。它提供了一套很是省力的 API,可經過 DOM,CSS 以及相似於 jQuery 的操做方法來取出和操做數據。html
jsoup 的主要功能以下:java
1. 從一個 URL,文件或字符串中解析 HTML;spa
2. 使用 DOM 或 CSS 選擇器來查找、取出數據;code
3. 可操做 HTML 元素、屬性、文本;htm
實戰代碼:blog
@Service("htmlParser") public class HtmlParserImpl implements HtmlParser { private static Logger logger = LoggerFactory.getLogger(HtmlParserImpl.class); /** * 解析人行徵信報告頁面 * @param html * @return */ public List<DetailVo> parse(String html) { if (StringUtils.isBlank(html)){ return null; } Document document = Jsoup.parse(html); Elements loanElements = document.select("table span.h1 strong"); for (Element element : loanElements){ if (element.text().contains("購房貸款")){ ... setLoanDetailVoByElement(element, detailVo, houseLoanDetailVo); }else if (element.text().contains("其餘貸款")){ ... setLoanDetailVoByElement(element, detailVo, loanDetailVo); } } return list; } /** * 設值查詢記錄(包括機構、我的) * @param tableEle * @param agencyDetailVo */ private void setQueryRecordDetailVoByTableElement(Element tableEle, DetailVo agencyDetailVo) { Elements trList = tableEle.select("tr"); if (trList != null && trList.size() > 0){ for (Element trEle : trList){ Elements trChildren = trEle.children(); if (trChildren != null && trChildren.size() == 4){ agencyDetailVo.getList().add(Lists.newArrayList( trChildren.get(0).text(), trChildren.get(1).text(), trChildren.get(2).text(), trChildren.get(3).text())); } } } } /** * 設值貸款部分(包括了信用卡、購房貸款、其餘貸款、爲他人擔保) * @param element * @param detailVo * @param creditCardDetailVo */ private void setLoanDetailVoByElement(Element element, DetailVo detailVo, DetailVo creditCardDetailVo) { Element olNode = element.parent().nextElementSibling(); Elements olNodes = olNode.children(); for (Element ele : olNodes){ if (ele.tagName().indexOf("span") > -1){ detailVo = new DetailVo(); detailVo.setTitle(ele.child(0).text()); }else if (ele.tagName().indexOf("li") > -1){ if (detailVo != null){ detailVo.getList().add(ele.text()); } if (ele.nextElementSibling() == null ||!"li".equals(ele.nextElementSibling().tagName())){ creditCardDetailVo.getList().add(detailVo); } } } } }
教程重點推薦:教程
http://www.cnblogs.com/jycboy/p/jsoupdoc.htmlelement
官網:pdo
https://jsoup.org/字符串