我已经使用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”的值,但它没有返回任何内容。
网站是否使用 Javascript 来填充页面?如果是这样,Jsoup 将不适合你。来自Baeldung:
请记住,jsoup 仅解释 HTML — 它不解释 JavaScript。因此,在支持 JavaScript 的浏览器中加载页面后通常会发生的 DOM 更改将不会在 jsoup 中看到。
至于运行完整浏览器引擎的替代方案,人们现在推荐的 Java 似乎是 Playwright,尽管我自己从未使用过它。