java之jsoup爬虫操作入门实战

在我目前看来,对于爬虫的理解就是,在浏览器上输入一个url的时候,会发现是生成一些前端的代码界面,从而显示出来的。而爬虫就是获取这些前端界面,再进行对界面的筛选和使用。
“获取请求返回的页面信息,筛选出我们需要的数据”

参考了这份学习视频:https://www.bilibili.com/video/BV1La4y1x7Wm

所以这里用java来进行对页面的调用。
这里我使用了jsoup包,
首先是需要导入jsoup包的依赖
(它是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数)

<dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.11.3</version>
</dependency>

在看一些审查元素:
在这里插入图片描述
会发现这个就是我们要找的,div就是

再看看等下要获取的li元素
在这里插入图片描述
以及li下面的每一个标签
在这里插入图片描述
由于jd这个懒加载的问题没有解决,所以换成了另一个网站,结果还是一样的呢

    package PaChong;

    import org.jsoup.Jsoup;
    import org.jsoup.nodes.Document;
    import org.jsoup.nodes.Element;
    import org.jsoup.select.Elements;

    import java.io.IOException;
    import java.net.MalformedURLException;
    import java.net.URL;

    public class HtmlParseUtil {
    
    
        public static void main(String[] args) throws IOException {
    
    
            //首先是获取网页 以京东的网页为例https://search.jd.com/Search?keyword=java
            String url="http://search.dangdang.com/?key=java&act=input";
            //再是需要解析网页,就需要使用jsoup,参数一个是url 一个是时间
            //而这个返回的Document 就是页面对象
            Document parse = Jsoup.parse(new URL(url), 30000);
            //所以这里就可以根据id来获取了
            Element j_goodsList = parse.getElementById("search_nature_rg");
            //这里可以查看一下是否能获取到
           // System.out.println(j_goodsList.html());
            //然后就是获取所有的li元素,调用的是tag方法,其实很好奇,为什么这边是elements呢,可以是因为
            Elements li = j_goodsList.getElementsByTag("li");
            //然后再获取这些标签下的内容
           for(Element elements:li){
    
    
                //这里的elements就是一个个独立标签了,也就是每一个li
                //比如获取图片,eq就是取第一个就行了
                //为什么不能直接是类呢
                String img=elements.getElementsByTag("img").eq(0).attr("src");
                //String img = elements.getElementsByTag("source-data-lazy-img").eq(0).attr("src");
                //然后还有是价格,而价格从代码上看就是一个类,选第一个元素,而且转换成text格式
                String price = elements.getElementsByClass("price").eq(0).text();
                //还有标题
                String name = elements.getElementsByClass("name").eq(0).text();
                //还有一些细节
               String detail=elements.getElementsByClass("detail").eq(0).text();
                //然后就可以输出了
                System.out.println("=========================");
                System.out.println(img);
                System.out.println(price);
                System.out.println(name);
               System.out.println(detail);



            }
        }
    }

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41115379/article/details/113664739
今日推荐