根据模式在ruby中的文本blob中选择一个单词



我有一个文本blob,我想根据它们是.png还是.jpg来选择URL。我想根据模式选择整个单词。

例如,在此blob中:

width='17'></a>&nbsp;<a href='http://click.e.groupon.com/?  qs=94bee0ddf93da5b3903921bfbe17116f859915d3a978c042430abbcd51be55d8df40eceba3b1c44e'     style="text-decoration: none;">n<img alt='Facebook' border='0' height='18'   src='http://s3.grouponcdn.com/email/images/gw-email/facebook.jpg' style='display: i

我想选择图像:

http://s3.grouponcdn.com/email/images/gw-email/facebook.jpg

我可以在html文本blob上使用nokogiri吗?

使用Nokogiri和XPath:

frag = Nokogiri::HTML.fragment(str) # Don't construct an entire HTML document
images = frag.xpath('.//img/@src').map(&:text).grep /.(png|jpg|jpeg)z/

XPath说:

  • .//——此片段中的任何位置
  • img—查找所有<img>元素
    • /@src——现在查找每个的src属性

然后我们:

  • map(&:text)–将所有Nokogiri::XML::Attr转换为属性的值
  • grep-只查找数组中以适当文本结尾的字符串

是的,你可以使用nokogiri,你应该!

这里有一个简单的片段:

require "nokogiri"
str = "....your blob"
html_doc = Nokogiri::HTML(str)
html_doc.css("a").collect{|e| e.attributes["href"].value}.select{|e| e.index(".png") || e.index(".jpeg") }

如果你只想找到以.jpg或.png结尾的url,应该使用这样的模式。

https?://.*?.(?:jpg|png)

相关内容

  • 没有找到相关文章

最新更新