2013-01-03 45 views
2

我需要从被格式化这样的形象标签列表获取文本:如何使用Nokogiri从图像标签中刮取文本?

<img src="/images/TextImage.ashx?text=Richmond" style="border-width:0px;" class=""> 

当我进入的XPath到引入nokogiri,我得到:

[#<Nokogiri::XML::Element:0x80513954 name="img" attributes=[#<Nokogiri::XML::Attr:0x805138dc name="src" value="/images/TextImage.ashx?text=Richmond">, #<Nokogiri::XML::Attr:0x805138b4 name="style" value="border-width:0px;">]>] 

有什么办法,我可以告诉Nokogiri返回“里士满”?我正在寻找一种方法,将返回某个字符串后的文本。如果没有办法只得到“里士满”,我怎么才能得到它的价值?

回答

2

您可以提取src属性XPath表达式像

src = doc.at_xpath '//img/@src' 

之后,你需要从属性中提取的名称,可能与正则表达式。

例如(这可能需要更多地参与,这取决于哪些格式可以在HTML页面中的src属性):

/\?text=(.*)/ =~ src 
puts $1 
+0

我得到这个,当我这样做:#<::引入nokogiri XML :: Attr:0x80582994 name =“src”value =“/ Uploads/Gallery/banners NEW/Atlata.jpg”> –

+0

@ Guyana.Hand是的,这是属性节点。您需要使用正则表达式从它中提取地名(您可以直接使用它作为正则表达式,就好像它是一个字符串,其'to_str'方法返回属性值)。请注意,它的格式与您问题中的格式不同,因此您的整体正则表达式需要比我在答案中使用的简单正则表达式更为复杂。 – matt

+0

谢谢!我不知道如何使用正则表达式。你能推荐一个教程吗? –

相关问题