[英]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.