2017-02-23 5 views
0

Я могу сузить область HTML-документа, используя nokogiri. Мне нужно иметь возможность извлекать href из объекта nokogiri, но я не могу понять, как это сделать для жизни меня. Вызов метода row.css('td > b').to_html дает мне довольно html-представление в строковой форме. Но мне нужно разобрать это, используя нокогири.Как разобрать XML-элемент Nokogiri?

"<b><a href=\"/ShowTopic-g293766-i9284-k10224928-Tour_companies_for_botswana-Botswana.html\" onclick=\"setPID(34603)\">\ntour companies for botswana</a></b>" 

nokogiri эквивалент, который я не могу извлечь URL из ниже:

[#<Nokogiri::XML::Element:0x3fe972a9deb8 name="b" children=[#<Nokogiri::XML::Element:0x3fe972ad90a8 name="a" attributes=[#<Nokogiri::XML::Attr:0x3fe972ad8ff4 name="href" value="/ShowTopic-g317055-i11941-k10224606-United_Expeditions_tour_company_Maun-Maun_North_West_District.html">, #<Nokogiri::XML::Attr:0x3fe972ad8fe0 name="onclick" value="setPID(34603)">] children=[#<Nokogiri::XML::Text:0x3fe972ad8900 "\nUnited Expeditions tour company, Maun">]>]>]

Сниппет выше запутанным бит nokogiri объекта XML, я думаю. Но я просто хочу получить href. Как, черт возьми, я это делаю?

ответ

1
row.css('td > b a').attr('href') 

Это должно делать работу. Узнайте больше о How to access attributes using Nokogiri.

+0

Я пробовал ту же идею, но холли-молли - это рамочка, раздражающая. С приведенным выше предложением я получаю следующую ошибку: 'TripAdvisorParserTest # test_getSubforumPageThreads: NoMethodError: undefined method' attribute 'для nil: NilClass /Users/imtiazahmad/.rvm/gems/ruby-2.1.2/gems/nokogiri-1.6. 8.1/lib/nokogiri/xml/node_set.rb: 164: в 'attr ' ' –

+1

понял, что лучший способ справиться с присоской - это использовать метод to_h, который сначала превращает его в хэш, а затем обрабатывает присоску в рубине напрямую –

Смежные вопросы