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

Phi*_*ime 2 ruby httparty web-scraping

这个问题可能结构很差,所以请耐心等待,我是新手。

我正在尝试构建一个简单的网络抓取工具,但每次运行代码时,我都会在终端中收到此警告。我尝试点击 github issues 的链接,希望能得到更清晰的解释,但我也不明白。尝试过谷歌搜索,但也没有任何结果。

[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
Run Code Online (Sandbox Code Playgroud)

我想我想知道的是,从根本上来说,这个警告是什么意思?从现在开始使用宝石时我应该做一些不同的事情吗HTTParty

Jer*_*lin 5

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

我现在用这个:

doc = HTTParty.get('https://some/site')
parsed ||= Nokogiri::HTML(doc.body)
Run Code Online (Sandbox Code Playgroud)

而不是之前收到警告时:

doc = HTTParty.get('https://some/site')
parsed ||= Nokogiri::HTML(doc)
Run Code Online (Sandbox Code Playgroud)