Отправка элементов jsoup в базу данных

#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 в своем коде?