Я делаю разбор веб-сайтов своих поставщиков, чтобы узнать текущие цены на товары.
Я использую vb.net и приложение для Windows, которое я написал в visual studio 2015
Один продавец недавно изменил способ отображения цен
Цены на товары находятся внутри общего основного деления.
Но цены могут быть внутри таблицы или простого div
Я могу легко вычеркнуть цены из таблиц или таблиц, но мне нужно сначала выбрать способ отображения цены, а затем отправить его на правильный код синтаксического анализа
Обратите внимание на HTML ниже, что это основной div для обеих схем ценообразования
<div class="price" id="itemPrice12345">
.. a table or a simple price div are here.
</div>
Так выглядит div, когда он содержит таблицу
<div class="price" id="itemPrice12345">
<table class="bglt"><tbody>
<tr>
<td class="texttable" nowrap="">1 to 9</td>
<td class="texttable">$9.93</td>
</tr></tbody></table>
</div>
Я анализирую цены вне таблицы, используя этот код выбора узла
Dim tables As HtmlAgilityPack.HtmlNodeCollection
tables = WebPageDocument.DocumentNode.SelectNodes("//*[contains(@id,'itemPrice')]/div[1]/table")
Затем я перебираю строки таблицы "./tr" и столбцы таблицы "./td", чтобы выбрать цены
Тот же основной div без таблицы выглядит следующим образом
<div class="price" id="itemPrice12345">
<div class="price firstprice">$3.50</div>
</div>
Я анализирую цену из этого простого div, используя этот код выбора узла
Dim PriceNode As HtmlAgilityPack.HtmlNodeCollection
PriceNode = WebPageDocument.DocumentNode.SelectNodes("//*[contains(@id,'itemPrice')]/div[1]/div")
ItemPrice = PriceNode(0).InnerText
У меня вопрос, как я могу определить, содержит ли основной ценовой элемент предмет таблицы или простой ценовой элемент внутри?
Как только я это узнаю, я могу отправить разбор в соответствующий раздел кода.
Итак, я думаю, мне нужно сначала узнать, что находится внутри основного div, но я не уверен, как это сделать?
Спасибо за любую помощь