Как мне объединить эти два условия, если мой код очищается без них? Мой код уже работает, но он очищает все строки (значения, не выделенные жирным и жирным шрифтом) и не очищает строку атрибута title.
Условие 1: анализирует строку таблицы, только если одно из ее полей выделено жирным шрифтом :
doc = Nokogiri::HTML(html)
doc.xpath('//table[@class="articulos"]/tr[td[5]/p/b]').each do |row|
puts row.at_xpath('td[3]/text()')
end
Условие2: получает только число из строки атрибута заголовка :
doc = Nokogiri::HTML(html)
numbers = doc.xpath('//p[@title]').collect { |p| p[:title].gsub(/[^\d]/, '') }
Мой код:
doc = Nokogiri::HTML(search_result.body)
rows = doc.css("table.articulos tr")
i = 0
details = rows.each do |row|
detail = {}
[
[:sku, 'td[3]/text()'],
[:desc, 'td[4]/text()'],
[:qty, 'td[5]/text()'],
[:qty2, 'td[5]/p/b/text()'],
[:price, 'td[6]/text()']
].each do |name, xpath|
detail[name] = row.at_xpath(xpath).to_s.strip
end
i = i + 1
detail
end
Вторая попытка:
doc = Nokogiri::HTML(search_result.body)
rows = doc.xpath('//table[@class="articulos"]/tr[td[5]/p/b]')
i = 0
details = rows.each do |row|
detail = {}
[
[:sku, 'td[3]/text()'],
[:desc, 'td[4]/text()'],
[:stock, "td[5]/p[@title]"],
[:price, 'td[6]/text()']
].each do |name, xpath|
detail[name] = row.at_xpath(xpath).to_s.strip
end
i = i + 1
if detail[:sku] != ""
price = detail[:price].split
if price[1] == "D"
currency = 144
else
currency = 168
end
stock = detail[:stock].gsub(/[^\d]/, '-')
cost = price[0].gsub(",", "").to_f
end
запас вместо того, чтобы просто очищать строку заголовка, он очищает весь абзац
<p-style="margin-top:-0px;-margin-bottom:0px;-cursor:hand"-title="2-en-su-sucursal"><b>10</b></p>
когда я хочу только 2 из атрибута title