目标 : 爬取某网站 并导出到excel
方法 : 使用 JSOUP 爬取网站 ,使用AlibabaExcel 导出到文件
实现 :
1.pom.xml 应用对应jar包
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.11.3</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.3</version>
</dependency>
2.java 代码实现 直接 使用列表信息
使用jsoup 从网站获取数据
public static void main(String[] args) {
Document doc = null;
try {
//
doc = Jsoup.connect("http://*****.html").get(); // 具体方法可以查看 jsoup 文档
Element singerListDiv = doc.getElementsByAttributeValue("class", "content").first();
Elements links = singerListDiv.getElementsByTag("a");
for (Element link : links) {
String linkHref = link.attr("href");
System.out.println("==============" + linkText);
}
} catch (IOException e) {
e.printStackTrace();
}
}
3.使用easyExcel 写入excel 说明文档 https://alibaba-easyexcel.github.io/quickstart/write.html
public class TestExcel {
private List<DemoData> data() {
List<DemoData> list = new ArrayList<DemoData>();
for (int i = 0; i < 10; i++) {
DemoData data = new DemoData();
data.setString("字符串" + i);
data.setDate(new Date());
data.setDoubleData(0.56);
list.add(data);
}
return list;
}
@Test
public void simpleWrite() {
// 写法1
String fileName = "D:/htmls/simpleWrite" + System.currentTimeMillis() + ".xlsx";
// 这里 需要指定写用哪个class去写
ExcelWriter excelWriter = EasyExcel.write(fileName, DemoData.class).build();
WriteSheet writeSheet = EasyExcel.writerSheet("模板").build();
excelWriter.write(data(), writeSheet);
// 千万别忘记finish 会帮忙关闭流
excelWriter.finish();
}
}
使用到的对象 DemoData
@Data
public class DemoData {
@ExcelProperty("字符串标题")
private String string;
@ExcelProperty("日期标题")
private Date date;
@ExcelProperty("数字标题")
private Double doubleData;
/**
* 忽略这个字段
*/
@ExcelIgnore
private String ignore;
}
可以根据对应的 jsoup 爬取对应网站 的页面 然后将数据拼装到内存 对象 在写入Excel 思路比较简单。EasyExcel使用的比较简单的用法,喜欢更复杂的可以查看对应的api
原文:https://www.cnblogs.com/JC-0527/p/12882233.html