2017-02-23 2 views
0

Je suis capable d'affiner la zone d'un document HTML en utilisant nokogiri. Je dois être capable d'extraire le href de l'objet nokogiri mais je ne suis pas capable de comprendre comment le faire pour la vie de moi. Appelant row.css('td > b').to_html méthode me donne la jolie représentation html sous forme de chaîne. Mais j'ai besoin d'analyser cela en utilisant nokogiri.Comment analyser un élément XML Nokogiri?

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

L'équivalent nokogiri que je suis incapable d'extraire l'URL est ci-dessous:

[#<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">]>]>]

L'extrait ci-dessus est un peu déroutant de l'objet xml nokogiri je suppose. Mais je veux juste obtenir le href. Comment diable puis-je faire cela?

Répondre

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

Cela devrait faire l'affaire. En savoir plus sur How to access attributes using Nokogiri.

+0

J'ai essayé la même idée mais holly molly est ce cadre gênant. Avec la suggestion ci-dessus, j'obtiens l'erreur suivante: 'TripAdvisorParserTest # test_getSubforumPageThreads: NoMethodError: méthode non définie' attribute 'pour nil: NilClass /Users/imtiazahmad/.rvm/gems/ruby-2.1.2/gems/nokogiri-1.6. 8.1/lib/nokogiri/xml/node_set.rb: 164: dans 'attr ' ' –

+1

réalisé la meilleure façon de gérer le meunier utilise la méthode to_h qui le transforme en un hachage d'abord, puis face à la meunier de ruby ​​directement –