Я пытаюсь очистить веб-страницу и извлечь уникальный идентификатор для каждого списка, например, "перечисление_328".
Это необработанные данные из инспектора Firefox:
<div id="result_container" class="listings js-listings-container">
<div class="listing-item result js-listing-item" id="listing_328">
<div class="listing-item result js-listing-item" id="listing_389">
<div class="listing-item result js-listing-item" id="listing_129">
Всего шесть объявлений.
Я думаю, что это получает детей:
elements = parsed_page.xpath('//div[@id="result_container"]/div');
Вот основной код для очистки страницы:
require 'nokogiri'
require 'byebug'
require 'webdrivers'
require 'watir'
def scraper
url ="....."
browser = Watir::Browser.new :firefox
browser.goto(url)
sleep(5)
parsed_page = Nokogiri::HTML(browser.html)
byebug
end
scraper
browser.close
parsed_page
:
#<Nokogiri::XML::Element:0x3fe0bfc48ea4 name="div" attributes=[#<Nokogiri::XML::Attr:0x3fe0bfc48d8c name="id" value="result_container">, #<Nokogiri::XML::Attr:0x3fe0bfc48d64 name="class" value="listings js-listings-container">] children=[#<Nokogiri::XML::Text:0x3fe0bfc4d51c "\n ">, #<Nokogiri::XML::Element:0x3fe0bfc4d24c name="div" attributes=[#<Nokogiri::XML::Attr:0x3fe0bfc4d0f8 name="class" value="listing-item result js-listing-item">, #<Nokogiri::XML::Attr:0x3fe0bfc4d0bc name="id" value="listing_328">]
Я ищу для извлечения listing_item
значений "перечисление_328", "перечисление_389" и т. Д.
Я могу вывести parsed_page
в текст и извлечь идентификатор.
У меня нет совпадения с:
elements.find {|n| puts n.inner_html.match(/(id=.listing_\d\d\d)/)}
но я получаю совпадение в другом месте для элементов в другом формате.
elements.find {|n| puts n.inner_html.match(/data-listing-id=.(\d\d\d)/)}
Могу ли я сделать лучше?
У меня нет идентификатора для детей.