Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 美化组错误';charmap';编解码器可以';t编码字符_Python_Web_Beautifulsoup_Python Requests - Fatal编程技术网

Python 美化组错误';charmap';编解码器可以';t编码字符

Python 美化组错误';charmap';编解码器可以';t编码字符,python,web,beautifulsoup,python-requests,Python,Web,Beautifulsoup,Python Requests,这是我目前拥有的代码 headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36'} r = requests.get("http://www.google.com", headers=headers) page_text = r.text soup = BeautifulSoup(pag

这是我目前拥有的代码

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36'}
r = requests.get("http://www.google.com", headers=headers)
page_text = r.text
soup = BeautifulSoup(page_text, 'html.parser')
print(soup.prettify())
理论上,它应该向谷歌发送请求,取回文本,并使用beautifulsoup的美化方法()

下面是他们的示例代码(来自)

每次我运行此代码时,都会出现编解码器错误。这是一个精确错误的屏幕截图

找到了解决方案

解决方案不是使用print()从堆栈交换成员使用此print方法

def uprint(*objects, sep=' ', end='\n', file=sys.stdout):
    enc = file.encoding
    if enc == 'UTF-8':
        print(*objects, sep=sep, end=end, file=file)
    else:
        f = lambda obj: str(obj).encode(enc, errors='backslashreplace').decode(enc)
        print(*map(f, objects), sep=sep, end=end, file=file)

当终端/powershell无法打印从BeautifulSoup接收到的任何字符时,就会发生这种情况。有两种解决方法,第一种比第二种更好:

  • 如中所述,您可以通过键入
    #coding=
    #-*-coding:-*-
    来声明python应该使用什么编码 你会把蛇帮线放在哪里
  • 不是推荐的方法-在python脚本的开头

    import sys
    reload(sys)
    sys.setdefaultencoding('utf8') # or whichever one you want to use.
    
    这是不推荐的方法,因为它实际上是对sys模块的一种误用,但是如果您正在编写一个不太复杂的程序,它会在紧要关头工作


  • 那么,当您使用这两种方法时,它会给您带来什么错误?首先,我在程序的顶部添加了#coding=utf8,同样的错误。尝试第二种方法然后我尝试了系统部分。我明白这个问题名称错误:未定义名称“重新加载”。经过快速检查,python3出现了错误。尝试从imp导入重新加载
    ,问题是您的shell编码,cmd基本上是垃圾。如果我是你,我会为自己省去很多麻烦,安装cygwin或使用一个像样的ide。你会推荐什么ide?手把手,pycharm,他们有一个免费的社区版
    
    import sys
    reload(sys)
    sys.setdefaultencoding('utf8') # or whichever one you want to use.