Jelenleg próbálok néhány értéket lekérni egy webhelyről a Jsoup segítségével az Android-alkalmazásomhoz.
Alapvetően ezeket az értékeket akartam kinyerni:, így a kódban a modellnévnek a gpuModel változónak kell lennie, az áraknak a gpuPrice-nek kell lennie, és így tovább minden egyes grafikus kártyánál. majd tárolnám őket a Firebase-ben a következő kóddal:
public void addToDatabase(String model, int price, int rating, double value,
double bench) {
Map<String, Object> docData = new HashMap<>();
docData.put("model", model);
docData.put("rating", rating);
docData.put("bench", bench);
docData.put("value", value);
docData.put("price", price);
db.collection("gpu").document(model).set(docData);
}
Jelenleg csak a gpu modell nevét próbálom kibontani, hogy az egyszerű legyen (a végén az összes többi értéket is ki akarom bontani), ez a jelenlegi webkaparó kódom:
public void webScrape(){
new Thread(new Runnable() {
@Override
public void run() {
final StringBuilder builder = new StringBuilder();
try {
Document doc = Jsoup.connect("https://www.videocardbenchmark.net/GPU_mega_page.html").get();
Elements gpus = doc.select("[id^=gpu]");
for (Element i : gpus) {
Elements gpuModel = i.select("tr td:nth-child(2)");
String gpuName = gpuModel.text().replace("/", "");
addToDatabase(gpuName, 12,12,12,12);
}
} catch (IOException e){
e.printStackTrace();
}
runOnUiThread(new Runnable() {
@Override
public void run() {
}
});
}
}).start();
Az én logikám szerint ennek ki kell választania az összes GPU-t, majd a for ciklusban csak a kártya nevét fogja kivonni. állítsa be a gpuName-et a kicsomagolt értékre, és tolja el az adatbázisba.
De ehelyett ezt kaptam az adatbázisomban:
Kibontotta a GPU nevét, de az összes többi nem kívánt mezőt is (beleértve az árakat, az értéket, a teszt dátumát stb.).
szóval a kérdésem az, hogy hogyan tudok minden értéket külön-külön kiválasztani? az összes példa, amit az interneten találtam, egy nagyon egyszerű weboldalon készült, ahol minden értéknek saját azonosítója van, így nem igazán tudok tanulni belőlük.
Ha bármit meg kell adnom, kérem, szóljon.
egyszerű kód megjelenítése annak, amit akarok:
Document doc = Jsoup.connect(the url).get();
Elements gpus = doc.select(all gpu);
for (each gpu in all gpus) {
gpuName = gpu.select(name);
gpuPrice = gpu.select(price);
gpuValue = gpu.select(value);
gpuPower = gpu.select(power);
addToDatabase(gpuName, gpuPrice, gpuPower, gpuValue);
}
tr td:nth-child(2)
kivonja az összes többi értéket? azt hittem, nem fogom a fejemet a logika köré csavarni 29.09.2018td:nth-child(8)
kivonja a teszt dátumát? (az én példámban 2016. aug.) 29.09.2018a
címke miatt van. 30.09.2018