我的Ruby / Nokogiri脚本是:
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
运行此脚本时出现以下错误:
http.rb:2030:in `read_status_line': wrong status line: "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"" (Net::HTTPBadResponse)
但是我的脚本正确写入文件,只是这个错误不断出现。错误是什么意思?
答案 0 :(得分:2)
在不知道您访问的网站的情况下,很难肯定地说,但我怀疑问题不在Nokogiri。
http.rb
正在报告错误,这很可能是抱怨返回的HTTPd标头。 http.rb
关注与HTTPd服务器的握手,并会抱怨丢失/格式错误的标头,但它不关心有效负载。
"text/html"
。
在Ruby 1.8.7 http.rb文件中,您将在代码中看到以下几行:
def response_class(code)
CODE_TO_OBJ[code] or
CODE_CLASS_TO_OBJ[code[0,1]] or
HTTPUnknownResponse
end
这似乎有可能产生你所看到的那种信息。