我正在使用以下代码解析网页:
@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
我正在尝试获取Reviews-和-City
之间的子字符串Epicure
Seb_on
Le_cherine
替换
link["href"]
通过
link["href"][[/\"Reviews-"(.*?)"-City"/, 1]
但我找不到合适的语法。谁能帮我找到正确的语法?感谢。
答案 0 :(得分:0)
/Reviews-((.)+)-City/
是提取" WHATIWANT"的正则表达式。来自" XX-Reviews-WHATIWANT-City-XX"
"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