В настоящее время я пытаюсь получить некоторые значения с веб-сайта с помощью Jsoup для моего приложения для Android.
По сути, я хотел извлечь эти значения: так, чтобы в коде имя модели указывалось в переменной gpuModel, цены переходили в gpuPrice и т. Д. Для каждой отдельной графической карты.и затем я бы сохранил их в firebase, используя этот код:
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);
}
Это HTML-код для каждого графического процессора:
Я сейчас пытаюсьИзвлеките только имя модели GPU, чтобы упростить его (в конце я хочу извлечь и все остальные значения), это мой текущий код очистки веб-страниц:
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();
по моей логике, это должно выбратьвесь GPU, а затем в цикле for, он будет извлекать только имя карты.установите gpuName на то, что было извлечено, и отправьте его в базу данных.
Но вместо этого я получил это в своей базе данных:
Извлечено имя графического процессора, но также и все другие нежелательные поля(включая цены, стоимость, дату тестирования и т. д.).
поэтому мой вопрос: как выбрать каждое значение отдельно?Все примеры, которые я нашел в Интернете, были сделаны на очень простом веб-сайте, где у каждого значения есть свой собственный идентификатор, поэтому я не могу извлечь из них уроки.
Если есть что-то, что я должен предоставить, пожалуйста, скажите мне.
простое кодовое представление того, что я хочу:
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);
}