如何使用nokogiri(ruby)从wikipedia电影页面检索总体信息

如何使用nokogiri(ruby)从wikipedia电影页面检索总体信息,ruby,nokogiri,Ruby,Nokogiri,Nokogiri通常通过搜索html标记(元素)来解析信息,但是如何能够仅从页面上编写的文本解析信息呢 例如,我想从 链接: 我想从以下文本中检索总信息: 一九九八年十月一日(星期四),最终本地生产总值为600788188元 我怎样才能用nokogiri做到这一点?你的问题很难回答,因为这是一个非常开放的问题。你面临着两个不同的问题。一个是如何解析文本,另一个是如何查找您要查找的信息 如何解析维基百科 我最初的方法是从HTML页面获取文本,然后使用正则表达式查找我需要的信息。这是一个很好的起点:

Nokogiri通常通过搜索html标记(元素)来解析信息,但是如何能够仅从页面上编写的文本解析信息呢

例如,我想从

链接:

我想从以下文本中检索总信息:

一九九八年十月一日(星期四),最终本地生产总值为600788188元


我怎样才能用nokogiri做到这一点?

你的问题很难回答,因为这是一个非常开放的问题。你面临着两个不同的问题。一个是如何解析文本,另一个是如何查找您要查找的信息

如何解析维基百科 我最初的方法是从HTML页面获取文本,然后使用正则表达式查找我需要的信息。这是一个很好的起点:

html = Nokogiri::HTML(IO.read 'myfile.html')
text  = html.at('body').inner_text
您首先使用Nokogiri获取HTML页面(在您的例子中是从URL获取),然后使用
internal\u text
获取该页面上的文本。获得文本后,可以使用任何可以从字符串中提取信息的方法。我会使用正则表达式:

> /.*gross of \$([0-9,]+).*/.match(text)[1]
=> "600,788,188"
这只是一个例子,但它应该允许您朝着正确的方向前进

如何找到正确的信息 您可能会遇到的问题是,只有当总收入始终采用相同的格式,即总收入为600788188美元时,上述正则表达式才有效。regex无法智能地分析页面,并计算出国内总收入是多少

我猜这也是你的问题被否决的原因。虽然从技术上讲,从单个页面提取信息并不困难,但编写一种算法,智能地解析不同的网站,从中提取相同的信息却非常困难

例如,你最好看看IMDB,它以一种非常可重复的模式列出了几乎所有电影的票房收入。查看泰坦尼克号的条目:

如果您使用API,它将变得更加容易。JSON比HTML更易于编程处理,如果您在google上搜索IMDB和API,您应该可以找到一些资源来解释如何做到这一点