Как правильно парсить selenium несколько значений?
Всем привет. Мне нужно спарсить одновременно - название товара, цену и скидку Как это правильно делать? вот верно?
while(true){
List<IWeblement> IWebElement = driver.FindElements(By.Xpath("тут путь к общему контейнеру"));
IWeblement zagolovok = driver.FindElements(By.Xpath("путь к одному элементу")).GetAttribute("InnerText");
// IWeblement price ...
// IWeblement discount ...
// Тут переключение страницы
}
Думаю, идея понятна, если нет добавлю данные
Ответы (1 шт):
Автор решения: artsmm
→ Ссылка
Набросал код:
bdhelp.OpenConnection();
while (true)
{
List<IWebElement> allElms = driver.FindElements(By.XPath("//li[contains(@class, 'j-product-item')]")).ToList();
foreach(var elm in allElms)
{
m++;
VariablesForReport.tovName = driver.FindElement(By.XPath(".//p[contains(@class, 'goods-card__description')]/span|//span[contains(@class, 'goods-name')]")).GetAttribute("innerText");
VariablesForReport.tovPriceWithDiscount = driver.FindElement(By.XPath(".//del[contains(@class, 'goods-card__price-last')]|//span[contains(@class, 'price-old-block')]/del")).GetAttribute("innerText");
VariablesForReport.tovPriceWithoutDiscount = driver.FindElement(By.XPath(".//del[contains(@class, 'goods-card__price-last')]|//span[contains(@class, 'price-old-block')]/del")).GetAttribute("innerText");
VariablesForReport.cardNum = driver.FindElement(By.XPath("//li[contains(@class, 'goods-card')]|//div[contains(@class, 'product-card-overflow')]/div/div[contains(@id,'')]")).ToString();
var query = $@"INSERT INTO `parser_report`(`product_name`) VALUES('{VariablesForReport.tovName}')";
var command = new MySqlCommand(query, bdhelp.Connection);
command.ExecuteNonQuery();
var query1 = $@"UPDATE `parser_report` SET `price_w_discount`='{VariablesForReport.tovPriceWithDiscount}' WHERE `Num` = {m}";
var command1 = new MySqlCommand(query1, bdhelp.Connection);
command1.ExecuteNonQuery();
var query2 = $@"UPDATE `parser_report` SET `price_without_discount`='{VariablesForReport.tovPriceWithoutDiscount}' WHERE `Num` = {m}";
var command2 = new MySqlCommand(query2, bdhelp.Connection);
command2.ExecuteNonQuery();
var query3 = $@"UPDATE `parser_report` SET `vendor_code`='{VariablesForReport.cardNum}' WHERE `Num` = {m}";
var command3 = new MySqlCommand(query3, bdhelp.Connection);
command3.ExecuteNonQuery();
}
}
bdhelp.CloseConnection();