简体   繁体   English

Ruby nokogiri解析正则表达式

[英]Ruby nokogiri parsing Regex

I am parsing a webpage using the following code: 我正在使用以下代码解析网页:

@doc = Nokogiri::HTML(open(url))
links = @doc.css("span[class='reviewCount']").css('a')
links.each do |link| 
  link["href"]
end

I get a list of href reference as follows 我得到的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

I am trying to get the substring between Reviews- and -City 我正在尝试获取评论-和-城市之间的子字符串

Epicure
Seb_on
Le_cherine

by replacing 通过替换

  link["href"]

by 通过

  link["href"][[/\"Reviews-"(.*?)"-City"/, 1]

but I do not manage to find the right syntax. 但我无法找到正确的语法。 Could anyone help me to find correct syntax? 谁能帮我找到正确的语法? Thanks. 谢谢。

/Reviews-((.)+)-City/ is the regexp to extract "WHATIWANT" from "XX-Reviews-WHATIWANT-City-XX" /Reviews-((.)+)-City/是从“ XX-Reviews-WHATIWANT-City-XX”中提取“ WHATIWANT”的正则表达式

 "XX-Reviews-WHATIWANT-City"[/Reviews-((.)+)-City/, 1]
 #=> "WHATIWANT"

Full solution: 完整解决方案:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM