[英]How I can scrape some data from web page
我有网页抓取问题。 我想做的是这样的:
我有这个网站: 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
这是内部select
与id
等于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 相同的方式选择第三个下拉列表(目标位置)的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.