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/字符串