美文网首页
爬虫遇到日本编码的网站(解决乱码、解码失败问题)

爬虫遇到日本编码的网站(解决乱码、解码失败问题)

作者: 沫明 | 来源:发表于2021-03-03 14:52 被阅读0次

原网页编码

原网页编码

问题:

直接获取到的数据是乱码,用response.text.encode('SHIFT_JIS')进行解码会有些特殊字符无法解码报错。
import requests
import chardet
url = "https://worldjpn.grips.ac.jp/documents/indices/pm/3.html"
payload={}
headers = {}
response = requests.request("GET", url, headers=headers, data=payload)
guess = chardet.detect(response.content)
print(guess)
print(response.text)
直接获取到的乱码
request解决方法:
response.encoding = response.apparent_encoding
import requests
import chardet
url = "https://worldjpn.grips.ac.jp/documents/indices/pm/3.html"
payload={}
headers = {}
response = requests.request("GET", url, headers=headers, data=payload)
response.encoding = response.apparent_encoding
guess = chardet.detect(response.content)
print(guess)
print(response.text)
request

scrapy解决方法:

response._encoding = "SHIFT_JIS"
response._cached_ubody = None
    response._encoding = "SHIFT_JIS"
    response._cached_ubody = None  # 清理缓存

或者

response._encoding = response.encoding
response._cached_ubody = None # 清理缓存
    response._encoding = response.encoding
    response._cached_ubody = None  # 清理缓存
scrapy

再或者在scrapy中添加编码补丁

参考:https://www.jianshu.com/p/bb268312839b

# encoding.py
from w3lib import encoding
import chardet
import chardet.charsetprober


_html_body_declared_encoding = encoding.html_body_declared_encoding


def html_body_declared_encoding(html_body_str):
    res = _html_body_declared_encoding(html_body_str)
    if res:
        return res
    guess = chardet.detect(html_body_str)
    if guess and guess['confidence'] > 0.2:
        return guess["encoding"]


encoding.html_body_declared_encoding = html_body_declared_encoding

在spider同级目录init引入encoding(或者把上面补丁直接放在init文件中)

import encoding as _

相关文章

  • 爬虫遇到日本编码的网站(解决乱码、解码失败问题)

    原网页编码 问题: 直接获取到的数据是乱码,用response.text.encode('SHIFT_JIS')进...

  • 插入数据库出现中文乱码问题

    插入数据库出现中文乱码问题 出现这种乱码问题,肯定是编码除了问题,编码和解码不是同一种编码格式就会出现乱码情况! ...

  • 任务4

    问答 网页乱码的问题是如何产生的?怎么解决?乱码原因:保存文件的编码格式和浏览器解析时解码格式不匹配造成的。解决办...

  • 关于字符串出现的乱码问题

    在字符串的编码解码过程中,往往会出现乱码,那么遇到这种问题,一般怎么解决? 需要记住几个要点: 1:关于getBy...

  • HTML基础知识-乱码、颜色表示方法、meta的作用及常见浏览器

    1.网页乱码的问题是如何产生的?怎样解决 ?a、保存时的编码方式与打开时的解码方式不统一会导致网页乱码;b、解决方...

  • Java 字符编码

    任何乱码问题都是因为编码和解码不一致造成。出现乱码时只需将乱码按照当前编码方式重新进行编码,然后在按照编码时所用的...

  • unicode编码 转 中文

    方法一:格式化 方法二:先编码再解码 scrapy 爬虫返回json格式内容unicode编码转换为中文的问题解决

  • 计算机编码发展简史

    编码方式是编程中经常遇到的问题,如果编码/解码不同就会造成乱码的现象,好好了解一下编码的知识还是有用的。 经常见到...

  • HTML基础

    乱码 问题乱码是由于编辑器的编码格式和浏览器的解码格式不一致造成的 解决编/解码格式保持一致编辑时保存为utf-8...

  • HTML知识点

    问答 1.网页乱码的问题是如何产生的?怎样解决? 答:网页乱码产生的主要原因是:文件使用的编码格式与浏览器解码方式...

网友评论

      本文标题:爬虫遇到日本编码的网站(解决乱码、解码失败问题)

      本文链接:https://www.haomeiwen.com/subject/gimqqltx.html