Ruby nokogiri解析正则表达式
我正在使用以下代码解析网页:Ruby nokogiri解析正则表达式,ruby,regex,Ruby,Regex,我正在使用以下代码解析网页: @doc = Nokogiri::HTML(open(url)) links = @doc.css("span[class='reviewCount']").css('a') links.each do |link| link["href"] end 我得到了如下的href引用列表 /Restaurant_Review-g187147-d719052-Reviews-Epicure-City_Ile_de_France.html#REVIEWS /Resta
@doc = Nokogiri::HTML(open(url))
links = @doc.css("span[class='reviewCount']").css('a')
links.each do |link|
link["href"]
end
我得到了如下的href引用列表
/Restaurant_Review-g187147-d719052-Reviews-Epicure-City_Ile_de_France.html#REVIEWS
/Restaurant_Review-g187147-d6958622-Reviews-Seb_on-City_Ile_de_France.html#REVIEWS
/Restaurant_Review-g187147-d8766885-Reviews-Le_cherine-City_Ile_de_France.html#REVIEWS
我试图在评论和城市之间找到子串
Epicure
Seb_on
Le_cherine
通过替换
link["href"]
借
但是我没有找到正确的语法。有人能帮我找到正确的语法吗?谢谢。/Reviews-()+)-City/
是从“XX评论WHATIWANT城市XX”中提取“WHATIWANT”的regexp
完整解决方案:
require 'nokogiri'
html = <<-EOF
<span class="reviewCount">
<a href="XX-Reviews-WHATIWANT-City-XX" target="_blank" onclick="XX;">1,361 reviews</a>
</span>
EOF
doc = Nokogiri::HTML(html)
doc.xpath("//span[@class='reviewCount']/a").each do |node|
puts node.attribute("href").to_s[/Reviews-((.)+)-City/, 1]
end
需要“nokogiri”
html=谢谢,但我之所以选择XX是因为它们是动态的,并且不断变化。对于我正在解析的所有href,只有“评论-”和“-City”保持不变。有没有一种方法可以在不指定字节数的情况下使用\w?谢谢,抱歉,我认为这个问题不够详细。我已经给出了一些我试图解析的完整HREF的示例。我试图检索的子字符串之前的字节数可能会更改,因此我不确定\w{7}是否始终有效。@Bastien我希望现在我正确理解了所有内容谢谢。多亏了你的建议,我才尝试了这个方法,而且效果很好。
"XX-Reviews-WHATIWANT-City"[/Reviews-((.)+)-City/, 1]
#=> "WHATIWANT"
require 'nokogiri'
html = <<-EOF
<span class="reviewCount">
<a href="XX-Reviews-WHATIWANT-City-XX" target="_blank" onclick="XX;">1,361 reviews</a>
</span>
EOF
doc = Nokogiri::HTML(html)
doc.xpath("//span[@class='reviewCount']/a").each do |node|
puts node.attribute("href").to_s[/Reviews-((.)+)-City/, 1]
end