繁体   English   中英

我如何从网页中抓取一些数据

[英]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这是内部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 相同的方式选择第三个下拉列表(目标位置)的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM