代码之家  ›  专栏  ›  技术社区  ›  Alibaba17

如何使用nokogiri(ruby)从维基百科电影页面检索总信息[关闭]

  •  -2
  • Alibaba17  · 技术社区  · 7 年前

    例如,我想从

    链接: https://en.wikipedia.org/wiki/Titanic_(1997_film)

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

    最终国内生产总值为 $600,788,188

    我怎么能和nokogiri这样做?

    1 回复  |  直到 7 年前
        1
  •  1
  •   jdno    7 年前

    如何解析维基百科

    我最初的方法是从HTML页面获取文本,然后使用正则表达式查找我需要的信息。 This answer

    html = Nokogiri::HTML(IO.read 'myfile.html')
    text  = html.at('body').inner_text
    

    首先使用Nokogiri获取HTML页面(在您的示例中是从URL获取),然后使用 inner_text . 一旦有了文本,就可以使用任何可以从字符串中提取信息的方法。我会使用正则表达式:

    > /.*gross of \$([0-9,]+).*/.match(text)[1]
    => "600,788,188"
    

    如何找到正确的信息

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

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

    您最好看看IMDB,例如,哪个列表 售票处 几乎所有电影的收入都以可重复的模式出现。查看泰坦尼克号的条目: http://www.imdb.com/title/tt0120338

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