【发布时间】:2011-02-28 06:54:21
【问题描述】:
我正在用 Ruby (1.9) 编写一个爬虫,它使用来自许多随机站点的大量 HTML。
在尝试提取链接时,我决定只使用.scan(/href="(.*?)"/i) 而不是 nokogiri/hpricot(主要加速)。问题是我现在收到很多“invalid byte sequence in UTF-8”错误。
据我了解,net/http 库没有任何编码特定选项,而且进来的东西基本上没有正确标记。
实际处理传入数据的最佳方式是什么?我尝试 .encode 设置了替换和无效选项,但到目前为止没有成功...
【问题讨论】:
-
可能会破坏字符,但保持字符串对其他库有效:valid_string = untrusted_string.unpack('C*').pack('U*')
-
遇到确切问题,尝试了相同的其他解决方案。没爱。试过马克的,但它似乎乱码。你确定
'U*'撤消'C*'? -
不,它没有 :) 我只是在一个网络爬虫中使用了它,我关心 3rd 方库不会崩溃,而不是我在这里和那里的一句话。