Ruby 在抓取网页(可能是编码)时,这些奇怪的问题是什么?
我正在尝试解析一些网页,例如:Ruby 在抓取网页(可能是编码)时,这些奇怪的问题是什么?,ruby,curl,web-scraping,web-crawler,nokogiri,Ruby,Curl,Web Scraping,Web Crawler,Nokogiri,我正在尝试解析一些网页,例如: http://www.imovirtual.com/imoveis/apartamentos/t0-t1-entrecampos-mobilado-lisboa/1038329/ http://www.imovirtual.com/imoveis/apartamentos/t2-quinta-do-romao-quarteira/1156717/ 我使用的是Nokogiri::HTML,第一个链接一切正常,但第二个链接只有垃圾,无法解析 我尝试使用curl,结果
http://www.imovirtual.com/imoveis/apartamentos/t0-t1-entrecampos-mobilado-lisboa/1038329/
http://www.imovirtual.com/imoveis/apartamentos/t2-quinta-do-romao-quarteira/1156717/
我使用的是Nokogiri::HTML,第一个链接一切正常,但第二个链接只有垃圾,无法解析
我尝试使用curl
,结果是一样的。
下面是第二个链接的结果示例:
��� DG;v�u�G{f�
��;?�@ː0t�Yw���`~�d��
f9����:�}P2k�㤷ϓ���togg���B�D�j���P�AS���cV���5h+�dp
有什么问题吗?
这两个页面在浏览器中都呈现得很好,我在它们的DOM中找不到明显的差异
注意:在第二个链接上使用
wget
会导致文件不可读。网页已压缩,请检查标题:内容编码:gzip
你需要把它解压缩
编辑:
如果您使用的是ruby,请尝试以下方法:
cleanHtml = Zlib::GzipReader.new(StringIO.new(htmlCompressed)).read
最有可能OP使用的是OpenURI,所以应该是:
Zlib::gzipreder.new(open(url\u to\u resource))。read
It works!你知道一种方法来判断它是否被压缩了吗?我的结论是:page=Zlib::gzipreder.new(page)if page.content\u encoding.include?“gzip”
还发现可以使用curl-I
获取响应的标题@“锡人”walfire