`
dingr
  • 浏览: 9649 次
  • 性别: Icon_minigender_1
  • 来自: ...
最近访客 更多访客>>
社区版块
存档分类
最新评论

用Nokogiri抓取页面URL中有中文的解决办法

阅读更多

我们在使用Nokogiri抓取网站页面的信息时,如果遇到你要抓取页面的URL里有中文,比如 我们拿豆瓣为例

我们要查找豆瓣里的一本书 :《sql语言艺术》他的查找URL是:http://book.douban.com/subject_search?search_text=SQL语言艺术&cat=1001

那么 你直接这样写代码的时候

   

url="http://book.douban.com/subject_search?search_text=SQL语言艺术=1001"
Nokogiri::HTML(open(url))

就会报错,因为浏览器打包给服务器发送参数的时候是经过编码的,所以我们也要给汉字经过一次编码,只需在这两句中间加上一句就可以了

url=URI.escape(url)

这样 rul 字符串就被编码成 这样:sql%E8%AF%AD%E8%A8%80%E8%89%BA%E6%9C%AF就没问题了

注意:上边的编码是吧 一个汉字转换成三个字节 语 -》%E8%AF%AD(看百分号就知道到了)如果你要抓取的网站编码是GBK 那么 要把它转换成 一个汉字 对应成 2个字节,%E8%AF 。

 

2
2
分享到:
评论
2 楼 dingr 2010-04-19  
呵呵 我感觉好像是一回事 你可以作个测试 你找个GBK的抓取以下
1 楼 Hooopo 2010-04-19  
引用
注意:上边的编码是吧 一个汉字转换成三个字节 语 -》%E8%AF%AD(看百分号就知道到了)如果你要抓取的网站编码是GBK 那么 要把它转换成 一个汉字 对应成 2个字节,%E8%AF 。


URL编码和网站编码不是一回事吧?

相关推荐

Global site tag (gtag.js) - Google Analytics