gpt4 book ai didi

ruby-on-rails - (Rails) Nokogiri 从 URL 返回 nil

转载 作者:数据小太阳 更新时间:2023-10-29 07:56:42 27 4
gpt4 key购买 nike

def noko_scrape
require 'nokogiri'
require 'open-uri'
url = "http://au.finance.yahoo.com/q/ta?s=ANZ.AX&t=2y"
doc = Nokogiri::HTML(open(url))
puts "Retrieved doc =" + doc[1..20]
...

我得到一个错误:

TypeError in StocksController#noko_scrape can't convert nil into String

(指最后一行)。

Nokogiri 似乎在 HTML 中发现错误并因此失败。

关于如何解决这个问题有什么建议吗?

最佳答案

HTML 中确实存在错误,如您尝试 doc.errors 所见:

require 'nokogiri'
require 'open-uri'
url = "http://au.finance.yahoo.com/q/ta?s=ANZ.AX&t=2y"
doc = Nokogiri::HTML(open(url))
doc.errors
#=> [#<Nokogiri::XML::SyntaxError: htmlParseEntityRef: no name>, #<Nokogiri::XML::SyntaxError: htmlParseEntityRef: no name>, #<Nokogiri::XML::SyntaxError: htmlParseEntityRef: no name>, #<Nokogiri::XML::SyntaxError: htmlParseEntityRef: no name>, #<Nokogiri::XML::SyntaxError: htmlParseEntityRef: no name>, #<Nokogiri::XML::SyntaxError: htmlParseEntityRef: no name>, #<Nokogiri::XML::SyntaxError: htmlParseEntityRef: expecting ';'>, #<Nokogiri::XML::SyntaxError: htmlParseEntityRef: expecting ';'>, #<Nokogiri::XML::SyntaxError: htmlParseEntityRef: no name>, #<Nokogiri::XML::SyntaxError: htmlParseEntityRef: no name>, #<Nokogiri::XML::SyntaxError: htmlParseEntityRef: expecting ';'>, #<Nokogiri::XML::SyntaxError: htmlParseEntityRef: no name>, #<Nokogiri::XML::SyntaxError: htmlParseEntityRef: no name>, #<Nokogiri::XML::SyntaxError: htmlParseEntityRef: no name>, #<Nokogiri::XML::SyntaxError: Tag nobr invalid>, #<Nokogiri::XML::SyntaxError: Tag nobr invalid>, #<Nokogiri::XML::SyntaxError: Tag nobr invalid>, #<Nokogiri::XML::SyntaxError: Element script embeds close tag>, #<Nokogiri::XML::SyntaxError: Element script embeds close tag>, #<Nokogiri::XML::SyntaxError: Element script embeds close tag>, #<Nokogiri::XML::SyntaxError: Element script embeds close tag>, #<Nokogiri::XML::SyntaxError: Element script embeds close tag>, #<Nokogiri::XML::SyntaxError: Element script embeds close tag>, #<Nokogiri::XML::SyntaxError: Element script embeds close tag>, #<Nokogiri::XML::SyntaxError: Element script embeds close tag>, #<Nokogiri::XML::SyntaxError: Element script embeds close tag>, #<Nokogiri::XML::SyntaxError: Element script embeds close tag>]

但是,这与您遇到的错误无关。您正在尝试将 doc[1..20] 转换为字符串,但调用 Nokogiri 文档的元素没有任何意义,因为该文档不是数组。因此,它们都是 nil:

doc[1]
#=> nil
doc[2]
#=> nil

(对任何其他 URL 执行相同操作,您将获得完全相同的结果。)

如果您想要的是文档的 HTML,您可以使用 to_html 方法获取它:

doc.to_html
#=> "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n<html>...

关于ruby-on-rails - (Rails) Nokogiri 从 URL 返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13550596/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com