Why do I get "wrong status line" errors from Nokogiri?
我的 Ruby/Nokogiri 脚本是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | require 'rubygems' require 'nokogiri' require 'open-uri' f = File.new("enterret" +".txt", 'w') 1.upto(100) do |page| urltext ="http://xxxxxxx.com/" +"page/" urltext << page.to_s +"/" doc = Nokogiri::HTML(open(urltext)) doc.css(".photoPost").each do |post| quote = post.css("h1 + p").text author = post.css("h1 + p + p").text f.puts"#{quote}" +"#{author}" f.puts"--------------------------------------------------------" end end |
运行此脚本时出现以下错误:
1 | http.rb:2030:in `read_status_line': wrong status line:"<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"" (Net::HTTPBadResponse) |
但是我的脚本正确写入文件,只是这个错误不断出现。错误是什么意思?
如果不知道您访问的是哪个站点,很难确定,但我怀疑问题不在于 Nokogiri。
另一方面,Nokogiri 会关注有效负载,即 HTML。 DOCTYPE 应该是 HTML 有效负载的一部分,所以我怀疑他们的服务器正在发送 HTML DOCTYPE 而不是 MIME doctype,它应该是
在 Ruby 1.8.7 http.rb 文件中,您将在代码中的 2030 处看到以下行:
1 2 3 4 5 | def response_class(code) CODE_TO_OBJ[code] or CODE_CLASS_TO_OBJ[code[0,1]] or HTTPUnknownResponse end |
这似乎是生成您所看到的那种消息的可能位置。