Ruby 使用 Mechanize 抓网页,出现 encoding error 问题,恼人的编码问题

lijavawei · 2013年03月19日 · 最后由 lijavawei 回复于 2013年03月19日 · 4085 次阅读

想在搜狗上抓取搜索到的 ruby 的内容链接文字(http://www.sogou.com/web?query=ruby&_asf=www.sogou.com&_ast=1363679185&w=01019900&p=40040100&sut=5422&sst0=1363679185007),编写如下程序

# encoding: utf-8 require 'rubygems' require 'mechanize'

a = Mechanize.new s="http://www.sogou.com/web?query=ruby&_asf=www.sogou.com&_ast=1363679185&w=01019900&p=40040100&sut=5422&sst0=1363679185007" page= a.get(s)

#page.encoding = 'gbk' page.links.each do |link| puts link.text end

运行之后出现 encoding error: input conversion failed due to input error,bytes 0xAA 0xA1 0xAA 0xC7 这样的错误 参照 http://ruby-china.org/topics/6188 加上 page.encoding = 'gbk'后只输出了搜狗自己的“帮助中心”等,而需要抓取的如“ruby 百度百科”等链接文字并没有输出。 请各位一定帮忙看看,该怎样修改才能得到需要的结果。谢谢!

def to_utf8 text
      converter = Iconv.new 'UTF-8//IGNORE', 'UTF-8'
      converter.iconv(text).strip
end

ruby 版本?我测试似乎是可以的。

#2 楼 @chenge ruby1.9.3,抓 baidu 都正常的就是抓搜狗就出问题

#1 楼 @SharpX 这个 to_utf8 加在哪来呀?

mac 测试没问题。

7 楼 已删除

#6 楼 @chenge 谢谢,在 win7 下有问题,换到其他系统下就没问题了,谢谢大家!

需要 登录 后方可回复, 如果你还没有账号请 注册新账号