如何使用 Jsoup 和 java 从该网站的按钮上抓取“85”?

问题描述 投票:0回答:1

tesco.com 的 html

请帮助我,我很困惑,很累,我只是觉得我完全精疲力尽了。我想从该页面中过滤掉 85,但我不知道该怎么做

    String url = "https://www.tesco.com/groceries/en-GB/shop/fresh-food/all";
    try{
        Document document = Jsoup.connect(url).userAgent(userAgent).get();
        Elements pgs = document.select("a.pagination--button");
        for(Element p: pgs) {
            System.out.println(p.text());
        }
    }catch(Exception e){
        e.printStackTrace();
    }
}

我想从所有按钮获取文本,迭代所有按钮,然后选择最后一个按钮,但这不会输出任何内容。

java web-scraping jsoup
1个回答
0
投票

代码的 JSoup 解析部分有效:

FileInputStream is = new FileInputStream(new File("src/main/resources/content.html"));
String content = IOUtils.toString(is, "UTF-8");
Document document = Jsoup.parse(content);
Elements pgs = document.select("a.pagination--button");
for(Element p: pgs) {
    System.out.println(p.attr("aria-label") + " : " + p.text());
}

产品

Current results page : 
Current results page : 1
Go to results page 2 : 2
Go to results page 3 : 3
Go to results page 169 : 169
Go to results page : 

该代码显然使用本地文件

content.html
:我浏览到 Tesco URL,并将页面源保存到该文件中。

我认为您需要考虑您是从网站获取内容。 在我看来,你没有得到你认为得到的 HTML。 可能是这样

  1. 该网站正在防御您抓取其内容
  2. 该网站的主体大部分是空的,并且由 JavaScript 填充(我没有调查这一点)。
© www.soinside.com 2019 - 2024. All rights reserved.