php网页抓取乱码(什么是这是的编码?的方式解决乱码问题? )

优采云 发布时间: 2021-10-31 02:15

  php网页抓取乱码(什么是这是的编码?的方式解决乱码问题?

)

  2、 如果上面的方法不行,页面还是乱码;或者在head标签下找不到charset属性;或者我们要采集很多网页,而且这些网页的编码方式都不一样,我们不可能在一个网页上一一查看head标签,所以可以通过以下方式用来解决乱码。

  (1)python 的 chardet 库

  可以使用以下方法解决乱码问题

  result = chardet.detect(response.content)

print(result)

data = response.content.decode(chardet.detect(response.content)['encoding'])

{'confidence': 0.99, 'language': '', 'encoding': 'utf-8'}

  从输出结果可以看出,这是一个“猜测”代码。猜测的方法是先采集各种代码的特征字符。根据特征人物的判断,“猜”的概率很高。

  这种方法的效率非常低。如果采集的网页很大,你只能猜测其中一部分的源代码,即

  result = chardet.detect(response.content[:1000])

  (2)响应编码

  也可以使用另一种方法,response自身的编码和apparent_encoding这两个变量。

  Response.encoding 一般来自 response.headers 中 content-type 字段的 charset 值。其他情况我不太了解。

  response.apparent_encoding 一般使用上面提到的python chardet 库。

  所以可以使用下面的方式来解决乱码问题

  data = response.content.decode(response.apparent_encoding)

  3、 一般来说,以上两种方法都可以解决乱码问题。但如果以上两种方法都不能解决,则可能是网页压缩造成的。使用以下方法解决此问题。

  检查你写的头信息是否收录 Accept-Encoding 字段。如果是,请删除此字段。乱码问题将得到解决。

  headers = {

    'Accept-Encoding': 'gzip, deflate, sdch',

    'Accept-Language': 'zh-CN,zh;q=0.8',

    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) 

    Chrome/49.0.2623.221 

    Safari/537.36 SE 2.X MetaSr 1.0',

    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',

    'Connection': 'keep-alive',

}

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线