HtmlCleaner是一款高效的HTML解析器,支持 Xpath语法提取HTML中的节点或元素。
1.添加依赖
<dependency> <groupId>net.sourceforge.htmlcleaner</groupId> <artifactId>htmlcleaner</artifactId> <version>2.22</version> </dependency>
2.使用方法
@RequestMapping("ana")
public String analysis() throws IOException, XPatherException {
Document document = Jsoup.connect("http://bj.xxxxx.com/jzbiaoqian/").timeout(5000).get();
//Elements elements = document.select("div#list-job-id");
String html = document.html();
HtmlCleaner htmlCleaner = new HtmlCleaner();
TagNode tagNode = htmlCleaner.clean(html);
Object[] ns = tagNode.evaluateXPath("//div[@id='list-job-id']//dt//a");
TagNode dlnode = ((TagNode)ns[0]);
String url = dlnode.getAttributeByName("href");
Document document1 = Jsoup.connect(url).timeout(5000).get();
String html1 = document1.html();
HtmlCleaner htmlCleaner1 = new HtmlCleaner();
TagNode tagNode1 = htmlCleaner1.clean(html1);
Map<String,String> map = new HashMap<>();
Object[] rs = tagNode1.evaluateXPath("//div[@class='d-c-left-hear']/h1") ;
Object[] rs2 = tagNode1.evaluateXPath("//p[@class='data-sty mb-5']//span") ;
Object[] rs3 = tagNode1.evaluateXPath("//ul[@class='clearfix pos-relat']/li") ;
Object[] rs4 = tagNode1.evaluateXPath("//div[@class='deta-Corp']") ;
map.put("gongsi",((TagNode)rs[0]).getText().toString());
map.put("date",((TagNode)rs2[0]).getText().toString());
for (Integer i =1;i<rs3.length;i++)
{
TagNode n = (TagNode)rs3[i];
map.put(i.toString(),n.getText().toString());
}
map.put("miaoshu",((TagNode)rs4[0]).getText().toString());
return map.toString();
}
3.返回数据
{date=更新时间:05-22, 1=薪资待遇:100元/小时 , 2=最低学历:大专, 3= 工作经验:3-5年, 4=年龄:不限, gongsi=五险一金急聘初高中历史教师, 5=招聘人数:3人, 6=联系电话: 李老师 (联系我时,请说是在赶集网上看到的) 查看完整电话 , 7=工作地点:北京昌平区永安路10-2都市节奏小区12号楼底商2层 查看地图 , 8=职位标签:长期兼职 , 9=工作时间:星期五,星期六,星期日, miaoshu= 1 具有一定的教学经验和扎实的专业知识。 2 普通话标准,可带动课堂气氛和学生学习的积极性。 3 热爱教育事业,有较强的事业心责任感,有良好的师德,善表达,具有团队精神。 4有学校教育教学经验或课外辅导机构教学经验者优先。 5.能针对每一个学生情况制定出一套有效的学习方案。 }