Jsoup 实现爬虫无法获取结点中的标签文本,求解

查看 31|回复 0
作者:tiRolin   
一个项目里需要实现 java 爬虫,爬取这个网站中的图片和标题
通过 Xpath 语句 //div[contains(@class,"article-img")]很快就获取到了所需要的 Elements 对象,但奇怪的是 Elements 对象中有所需要的内容,打印也能正常展示,但是一旦遍历 Elements 尝试去获取标签属性就打印不出任何结果,调用获取所有属性方法并打印就只能打印出后两个我不需要的属性,但是前面打印的时候我需要的属性又还在
代码如下
    @Override
    public R crawler() {
        try(WebClient webClient = WebClientUtils.getWebClient()){
            System.out.println("开始爬取.....");
//            WebRequest webRequest = new WebRequest(new URL("https://www.cnhnb.com/xt/search/?%E6%9F%91%E6%A9%98%E5%87%A4%E8%9D%B6"), HttpMethod.GET);
//            HtmlPage page = webClient.getPage(webRequest);
//            Document document = Jsoup.parse(page.asXml());
            String url = "https://www.cnhnb.com/xt/search/?%E6%9F%91%E6%A9%98%E5%87%A4%E8%9D%B6";
            Document document = Jsoup.connect(url).get();
            Elements elements = document.selectXpath("//div[contains(@class,\"article-img\")]");
            System.out.println(elements.size()); //大小显示为 10
            System.out.println(elements.html()); //elements 有结果,能正确打印出内容
            for (Element element : elements) {
                System.out.println(element.html());//能正确打印出内容,注释为打印结构
                /*
               

                 */
                System.out.println(element.attr("alt")); //无内容
                System.out.println(element.attr("src")); //无内容
                Attributes attributes = element.attributes();
                for (Attribute attribute : attributes) {
                    System.out.println(attribute.html()); //打印出后两个属性,注释为打印结果
                    /*
                    
                        class="article-img"
                        data-v-1dc19fe0
                     */
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }
我测试爬虫功能的方式开启项目之后打开本地 Swagger 并调用方法
这个问题我搞了两天都没有解决,去网上查也没看到谁有类似问题,和学长交流两三天了我啥方法都试过了也不行,实在没办法了我才来求教各位,来个大佬救救
您需要登录后才可以回帖 登录 | 立即注册

返回顶部