【问题标题】:What are these strange issues when scraping a web page, maybe encoding?抓取网页时这些奇怪的问题是什么,也许是编码?
【发布时间】:2013-05-29 17:44:46
【问题描述】:

我正在尝试解析一些网页,例如:

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 会导致文件不可读。

【问题讨论】:

    标签: ruby curl web-scraping web-crawler nokogiri


    【解决方案1】:

    网页被压缩,查看header:Content-Encoding: gzip 你需要解压。

    编辑:

    如果你使用的是 ruby​​,试试这个:

    cleanHtml = Zlib::GzipReader.new(StringIO.new(htmlCompressed)).read
    

    【讨论】:

    • 很可能 OP 正在使用 OpenURI,所以应该是:Zlib::GzipReader.new(open(url_to_resource)).read
    • 有效!你知道一种方法来确定它是否被压缩吗?
    • 我最终得到了:page = Zlib::GzipReader.new(page) if page.content_encoding.include? "gzip" 还发现您可以使用curl -I 来获取响应的标头。 @walfire @the-tin-man
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    • 2020-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多