爬虫2024-02-06 08:49:52 Python搞爬虫比较专业一些,Java也可以搞。 行情来了-- 为我们的客户提供比较精准的炒股,炒币等信息。 网站:https://www.abuquant.com/rankDetail/final_score_rank/coin/day#selectExchange 爬到数据之后,以邮件的方式发送给我的订阅客户! Java如何爬取想要的数据呢?--> Jsoup 工具。官网--https://jsoup.org/ JSoup 是java 开发的一款html解析器,可以直接解析某个url,html文本,提供了一整套非常省力的API. 参考网站:https://blog.csdn.net/justLym/article/details/105715516 该工具类: 先通过网址获取到一个Document对象 然后通过各种API获取Element 或者 Elements 元素 都称之为一个元素。 ```java // 通过元素id值来获取对应的节点 Element element = document.getElementById(String id); // 通过标签名来获取 Elements elements = document.getElementsByTag(String tagName); // 通过类名来获取 Elements elements = document.getElementsByClass(String className); // 通过属性名来获取 Elements elements = document.getElementsByAttribute(String key); // 通过指定属性名称和属性值来获取节点对象 Elements elements = document.getElementsByAttributeValue(String key, String value); // 获取所有节点元素 Elements elements = document.getAllElements(); ```java public Elements select(String cssQuery) { return Selector.select(cssQuery, this); } File input = new File("/tmp/input.html"); Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/"); //带有href属性的a元素 Elements links = doc.select("a[href]"); //扩展名为.png的图片 Elements pngs = doc.select("img[src$=.png]"); //class等于masthead的div标签 Element masthead = doc.select("div.masthead").first(); //在h3元素之后的a元素 Elements resultLinks = doc.select("h3.r > a"); 分析要爬取的网站: @Test public void test04 () throws IOException{ List<Message> list =new ArrayList<Message>(); // 获取一个文档对象,一个网页就是一个文档 Document document = Jsoup.connect("https://www.abuquant.com/rankDetail/final_score_rank/coin/day#selectExchange").get(); // 获取该文档下面的,所有被class="newList" 修饰的元素 Elements lists = document.getElementsByClass("newsList"); // 获取newsList元素中的一个即可,在这个元素的第一个中,获取里面所有的li标签对象 Elements lis = lists.first().getElementsByTag("li"); System.out.println(lis.size()); for (int i = 0; i < lis.size() ; i++) { Message message =new Message(); Element element = lis.get(i); Element h3 = element.getElementsByTag("h3").first(); String coinName= h3.text(); System.out.println(coinName); message.setCoinName(coinName); Element xs8 = element.getElementsByClass("layui-col-xs8").first(); Elements ps= xs8.getElementsByTag("p"); for (int j = 0; j < ps.size(); j++) { Element p = ps.get(j); if(j==0){ message.setLevel(p.text()); } if(j==3){ message.setScore(p.text()); } System.out.println(p.text()); } list.add(message); } System.out.println(list); } 上一篇:常见的问题系列---【All elements are null】下一篇:9.19 第二个5题