gpt4 book ai didi

java - 如何从网页上抓取一些数据

转载 作者:行者123 更新时间:2023-12-02 01:59:44 25 4
gpt4 key购买 nike

我在网页抓取方面遇到问题。我想做的是这样的:

我有这个网站:https://www.arrentacar.rs/sr/vozni-park/#

正如您在页面按钮“Rezervisi”上看到的,当我点击它时,我想抓取下一个数据:

网站打开新窗口时的第一个下拉菜单,该下拉列表中的“Volkswagen UP!1.0”我想抓取所有汽车,然后在这个名为“Mesto preuzimanja vozila”的下拉菜单中我想抓取所有项目,然后在名为“Mesto vracanja vozila”的下拉菜单我想抓取所有项目。

这是我在第一个下拉菜单中尝试输入汽车名称的方法:

Document doc
= Jsoup.connect("https://www.arrentacar.rs/sr/vozni-park/#").get();

Elements elems = doc.select(".inner-form__elements");

for (Element e : elems) {
String carName = e.select(".select-vehicle").text();
System.out.println(carName);
}

这工作正常,但它不会向我显示表列中的数据,而 IMDB 的标题和评级显示我是正确的。

最佳答案

您的选择器可以调整。当您可以使用特定 id 时,不要按类别选择。在这里你可以因为 select你想要有唯一的名称和ID <select name="car" id="carlist" ... >所以他们中的任何一个都会是更好的选择。这样您也将避免 for循环当前仅循环一个元素,因为只有一个元素具有类 inner-form__elements 。您的第二个选择器.select-vehicle也太笼统,选择太多。那样text()将其包含的所有内容作为一个字符串返回。要仅获取选项,您必须选择所有标签 option里面有 selectid等于 carlist 。然后你可以迭代它们,这样你就会得到单个字符串。前两个下拉列表的代码是:

Document doc = Jsoup.connect("https://www.arrentacar.rs/sr/vozni-park/#").get();

// selecting all "options" from element with id=carlist
Elements cars = doc.select("#carlist > option");

// remove "Izaberi vozilo"
cars.remove(cars.first());

// display all cars
for (Element car : cars) {
System.out.println(car.text());
}

System.out.println("------");

// selecting all "options" from element with id=mestopreuzimanja
Elements startLocations = doc.select("#mestopreuzimanja > option");

// display locations
for (Element startLocation : startLocations) {
System.out.println(startLocation.text());
}

尝试按照与 startLocations 相同的方式选择第三个下拉列表(目标位置)的值。

关于java - 如何从网页上抓取一些数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57380628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com