Я пытаюсь сделать скребок для рыночного сайта, который странным образом перечисляет их содержимое.Для каждого элемента в списке, я должен щелкнуть по нему, чтобы найти цену, и после того, как я щелкнул по нему и вернулся после анализа данных, порядок списка элементов мог измениться.
Нет особого способа ссылаться на каждую «ссылку» с помощью Watir, поэтому фактическое успешное упорядоченное расценение всех предметов мне не известно.
Я использую Watir для доступа к элементу rb browser.element(:text => 'ItemName').click
.Это хорошо, если бы это был только один элемент, который я хотел проанализировать с помощью Nokogiri.
<div id="market" class="itemList active" style="height: 396px;" data-category="30">
<div class="item" data-mainkey="4601" data-count="40503" data-grade="0">
<div class="thumbImg" style="background-image: url("https://akamai-webcdn.kgstatic.net/TradeMarket/Common/item/4601.png")"></div>
<div class="content"><p>Ash Timber</p><p class="gray"></p></div>
<div class="count">40503</div>
</div>
<div class="item" data-mainkey="4602" data-count="266" data-grade="0">
<div class="thumbImg" style="background-image: url("https://akamai-webcdn.kgstatic.net/TradeMarket/Common/item/4602.png")"></div>
<div class="content"><p>Maple Timber</p><p class="gray"></p></div>
<div class="count">266</div>
</div>
Так будет выглядеть список, за исключением нескольких сотен статей.
browser.element(:text => 'Materials').click
sleep 2
browser.element(:text => 'Wood').click
sleep 2
browser.element(:text => 'Ash Timber').click
sleep 2
page = Nokogiri::HTML(browser.html)
page.xpath('/html/body/div/div[1]/main/div[1]/div[2]/div[2]/p[1]').each do |nc|
@name = (nc).text
puts @name
end
Есть ли способ перебирать каждый элемент на основе их "data-mainkey"", поскольку это идентификатор элемента из того, что я видел.
В настоящее время это проект, и он выводит имя элемента просто отлично.
Я хотел бы проектчтобы просмотреть список статей, введите каждую, проанализируйте значение в массиве и покажите результат, но я понятия не имею, как к этому подойти.