代码之家  ›  专栏  ›  技术社区  ›  Ray

rvest read_html输入不正确的utf-8编码错误

  •  0
  • Ray  · 技术社区  · 7 年前

    尝试调试一个web scraper时,我遇到了一个使用Hadley的编码问题。 rvest 包裹。

    作为一个可重复的例子,考虑以下两个链接:

    library(rvest)
    
    ## This works:
    read_html("http://clasificadosonline.com/UDRealEstateDetail.asp?ID=4234361")
    
    ## This gives me an error:
    read_html("http://clasificadosonline.com/UDRealEstateDetail.asp?ID=4252734")
    

    第一个链接:

    {xml_document}
    <html>
    [1] <head>\n<script type="text/javascript">\r\n\r\n\t\r\nif (screen.width <= 480) {\r\n\tdocument.location = "http://www.clasificado ...
    [2] <body>\n<br><link href="StylesClas.css" rel="stylesheet" type="text/css">\n<!-- Google Tag Manager --><noscript><iframe src="//w ...
    

    第二个链接:

    > read_html("http://clasificadosonline.com/UDRealEstateDetail.asp?ID=4252734")
    Error in doc_parse_raw(x, encoding = encoding, base_url = base_url, as_html = as_html,  : 
      Input is not proper UTF-8, indicate encoding !
    Bytes: 0xDA 0x4C 0x54 0x49 [9]
    

    检查HTML 两者都有 第页,我看到以下内容:

    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    

    为什么一个有效,另一个无效?

    我试过包装 x 在里面 read_html() 具有 iconv() 如以下相关问题所示,它不起作用:

    1. R: rvest - is not proper UTF-8, indicate encoding?
    2. encoding error with read_html

    编辑:

    我使用以下软件包:

    • rvest_0.3.2
    • xml2_1.2.0
    • httr_1.3.1

    有什么想法吗??谢谢!你看!

    1 回复  |  直到 6 年前
        1
  •  3
  •   MrFlick    7 年前

    使用

    read_html("http://clasificadosonline.com/UDRealEstateDetail.asp?ID=4252734",
        encoding="iso-8859-1")
    

    因为文件就是这么说的。将数据放入meta标记的问题是r需要能够读取文件才能读取该标记,但是如果没有正确的编码,它就无法读取文件。