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

标签 java jsoup

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

我有这个网站: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/

相关文章:

java - 使用 JSoup 将 android 中的 href 值更改为本地值

java - 我应该如何修改来解析Google新闻搜索文章标题和预览和URL?

java - org.jsoup.Jsoup 不处理 javascript 链接?

java - 具有 ID 的表中 TD 的 CSS 选择器

java - 检查 Java 字符串中是否存在时间

java - 使用 volley 进行网络操作时如何显示 ProgressDialog

java - Java 中的吃 bean 碰撞

java - 在 json 中改造 boolean 值或数组

java - apples 类型的 Ash() 方法未定义

java - Pycharm 安装提示 OpenJDK