#java #jdbc #jsoup
Вопрос:
Я использую HTML-анализатор Jsoup для получения информации с определенного веб-сайта, в моем случае название продукта и цена продукта.
После получения вышеупомянутого у меня есть два разных списка названий продуктов и их эквивалентных цен.
Теперь я, конечно, должен поместить их обоих в таблицу базы данных как пару, но именно здесь я застрял. Есть ли способ решить эту проблему?
Вот фрагмент ниже…
Document document = Jsoup.connect("http://www.winwin.rs/").timeout(6000).get();
Elements names = document.getElementsByClass("product-name");
Elements prices = document.getElementsByClass("price");
String query = "insert into product (name, price) values (?, ?)";
Connection conn = mysqlconnect.ConnectDb();
PreparedStatement preparedStmt = conn.prepareStatement(query);
for (Element element : names) {
preparedStmt.setString(1, element.text());
}
for (Element element : prices) {
preparedStmt.setString(2, element.text());
}
preparedStmt.execute();
conn.close();
Ответ №1:
Предполагая, что списки имеют одинаковую длину и порядок наименований продуктов и цен действителен, вы можете использовать классический цикл for. И я бы рекомендовал использовать пакетное обновление вместо вставки сведений о продукте по одному. Пример
Elements names = document.getElementsByClass("product-name");
Elements prices = document.getElementsByClass("price");
String query = " insert into product (name,price) values (?,?)";
Connection conn = mysqlconnect.ConnectDb();
PreparedStatement preparedStmt = conn.prepareStatement(query);
conn.setAutoCommit(false);
for (int i = 0; i < names.size(); i ) {
preparedStmt.setString(1,names.get(i).text());
preparedStmt.setString(2,prices.get(i).text());
preparedStmt.addBatch();
}
preparedStmt.executeBatch();
conn.commit();
conn.close();
Комментарии:
1. Хорошо, но где вы просматриваете список arraylist в своем коде?