使用SpringBoot+Jsoup做java简单’爬虫’
Jsoup简介
Jsoup是一款java的Html解析器,可以直接解析Html。针对网页提供了相关Api,可以通过Dom、Css、Jquery等属性来操作和解析网页。
主要类介绍:
- Jsoup 类提供了连接,清理和解析HTML文档的方法
- Document 获取HTML文档
- Element 获取、操作HTML节点
实战(爬京东网页数据)
1.创建Maven项目
2.导入pom依赖
根据自己需求减少或增加依赖
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <dependencies> <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.10.2</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
|
3.编写工具类(方便调用)
我这里写的比较简单,相关复杂设置可以去网上在搜一搜
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| public class HtmlParseUtil {
public static Document getDocment(String keyword,Integer page){ String url = "https://search.jd.com/Search?keyword=" + keyword + "&page=" +page; try { Document document = Jsoup.parse(new URL(url), 9000); return document; } catch (IOException e) { e.printStackTrace(); } return null; } }
|
4.相关测试
编写测试类,调用工具类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| @SpringBootTest public class HtmlTest {
@Test public void HtmlParseTest(){ Document document = HtmlParseUtil.getDocment("java", 1); Elements elements = document.getElementsByClass("gl-warp clearfix"); Elements lis = elements.get(0).getElementsByTag("li"); for (int i = 0; i < lis.size(); i++) { Element booknames = lis.get(i).getElementsByClass("p-name").get(0); String bookname = booknames.getElementsByTag("em").get(0).text(); System.out.println(bookname); Element elementsByClass = lis.get(i).getElementsByClass("p-img").get(0); String img = elementsByClass.getElementsByTag("img").get(0).attr("data-lazy-img"); System.out.println(img); Element prices = lis.get(i).getElementsByClass("p-price").get(0); String price = prices.getElementsByTag("i").get(0).text(); System.out.println(price); } } }
|
后续可以根据自己需求做不同的逻辑(比如把它封装成一个list,批量添加到es中)