如何使用Jsoup获取页面对象列表

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

我已经使用Jsoup很长时间了,我设法在几个网站上捕获它,但有一个我根本做不到,我尝试过传递几乎所有可能的id,但我无法返回结果列表。

我的代码结构非常简单:

`

fun execute(beer: String, record: Int=100): WebsiteEntity {

    val products = arrayListOf<ProductEntity>()
    var document: Document? = null

    try {
        document = Jsoup.connect("https://mercado.carrefour.com.br/s?q=heineken&sort=score_desc&page=0").get()
    } catch (e: Exception) {
        return getWebsiteEntity(products)
    }

    for(item in document.select(".grid .grid-cols-2")) {

        products.add(
            ProductEntity(
                name = "",
                price = "",
                partner = "",
                url = "",
                image = "",
                percent = "",
                websiteName = ""
            )
        )
    }
    return getWebsiteEntity(products)
}

`

我尝试获取网格“grid grid-cols-2 xl:grid-cols-5 md:grid-cols-4”的值,但它没有返回任何内容。

evidência

web-crawler jsoup
1个回答
0
投票

网站是否使用 Javascript 来填充页面?如果是这样,Jsoup 将不适合你。来自Baeldung

请记住,jsoup 仅解释 HTML — 它不解释 JavaScript。因此,在支持 JavaScript 的浏览器中加载页面后通常会发生的 DOM 更改将不会在 jsoup 中看到。

至于运行完整浏览器引擎的替代方案,人们现在推荐的 Java 似乎是 Playwright,尽管我自己从未使用过它。

© www.soinside.com 2019 - 2024. All rights reserved.