弃用:HTTParty 将不再覆盖 `response#nil?`。这个弃用警告是什么意思?

DEPRECATION: HTTParty will no longer override `response#nil?`. What does this Deprecation warning mean?

这个问题可能结构不合理,所以请多多包涵,我是新手。

我正在尝试构建一个简单的网络抓取工具,但每次我 运行 我的代码都会在终端中收到此警告。我试图按照 link 到 github 问题希望我能得到更清楚的解释,但我在那里也不明白。尝试谷歌搜索,但也没有。

[DEPRECATION] HTTParty will no longer override `response#nil?`.
This functionality will be removed in future versions.
Please, add explicit check `response.body.nil? || response.body.empty?`.
For more info refer to: https://github.com/jnunemaker/httparty/issues/568

我想我想知道的是,从根本上说,这个警告是什么意思?在使用 HTTParty gem?

时,我现在应该做些不同的事情吗?

这也让我很烦。您可能正在将来自 HTTParty.get 的响应传递给其他正在测试 nil 的代码。我将正文传递给 Nokogiri::HTML,该代码最终调用了 HTTParty.response.nil?。为了解决这个问题,我开始将“正文”而不是响应对象发送给 Nokogiri。相当多的人可能 运行 喜欢这个,因为到处都是这种模式的 Nokogiri 示例代码。

我现在用这个:

doc = HTTParty.get('https://some/site')
parsed ||= Nokogiri::HTML(doc.body)

而不是之前收到警告时:

doc = HTTParty.get('https://some/site')
parsed ||= Nokogiri::HTML(doc)
url = "https://www.startech.com.bd/laptop-notebook/laptop"

  unparsed_page = HTTParty.get(url)
  parsed_page = Nokogiri::HTML(unparsed_page)

我遇到了和你一样的错误

[DEPRECATION] HTTParty will no longer override `response#nil?`. This functionality will be removed in future versions. Please, add explicit check `response.body.nil? || response.body.empty?`. For more info refer to: https://github.com/jnunemaker/httparty/issues/568
/home/abir/.rvm/gems/ruby-2.7.2/gems/nokogiri-1.11.1-x86_64-linux/lib/nokogiri/html/document.rb:209:in `parse'

所以按照 Jeremy Mullin 的说法修改了代码,现在可以正常工作了。

url = "https://www.startech.com.bd/laptop-notebook/laptop"

  unparsed_page = HTTParty.get(url)
  parsed_page = Nokogiri::HTML(unparsed_page.body)