Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.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 3 | Unicode错误|请求和美化组_Python_Python 3.x - Fatal编程技术网

Python 3 | Unicode错误|请求和美化组

Python 3 | Unicode错误|请求和美化组,python,python-3.x,Python,Python 3.x,我仍在学习Python3,我正在尝试制作一个程序,使用请求和BeautifulSoup来完成这项工作。 这两个模块我都不熟悉 我遇到了与Unicode相关的错误,因为我试图在分析代码之前将代码保存到文件中 错误: Traceback (most recent call last): File "C:\Users\Gonçalo\Desktop\Coding\Python\Web Crawler\Image Retriver.py", line 25, in <module>

我仍在学习Python3,我正在尝试制作一个程序,使用请求和BeautifulSoup来完成这项工作。 这两个模块我都不熟悉

我遇到了与Unicode相关的错误,因为我试图在分析代码之前将代码保存到文件中

错误:

 Traceback (most recent call last):
    File "C:\Users\Gonçalo\Desktop\Coding\Python\Web Crawler\Image Retriver.py", line 25, in <module>
    saveFile.write(soup)
  File "C:\Python34\lib\encodings\cp1252.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u200e' in position 145890: character maps to <undefined>

谢谢你的帮助

这可以让您更接近,但您会遇到其他问题,您应该将其包装在try/except块中,并使用else扩展if,因为如果文件夹存在,您没有说明希望它做什么(如果存在,您将得到一个错误)

我希望这会让你走上正确的道路。如果它真的打到了复选框,如果没有,我会在这里帮助你。 当做
Jason

这可以让您更接近,但您会遇到其他问题,您应该将其包装在try/except块中,并使用else扩展if,因为如果文件夹存在,您没有说明希望它执行什么操作(如果存在,则会出现错误)

我希望这会让你走上正确的道路。如果它真的打到了复选框,如果没有,我会在这里帮助你。 当做 Jason

这类似于。您的问题是unicode的一个特性。一开始有ASCII码,所有人都需要128个字符

然后一些聪明的人看到,一个字符的8位可以给他们256个字符,因此就产生了代码页,不同的系统会使用128-256个字符作为其他语言的符号和字母。所有这些都很好,直到人们想在一个文件中表示一种以上的语言,或者说,天哪,一种超过256个符号的语言

还有一些聪明人说,多用些比特!但是有多少人16岁,32岁?但是如果我不想让我的文件大小增加一倍或四倍呢?更聪明的人说“简单,我们将使用编码”,因此诞生了utf-8和ISO 8859-1及其同类产品。更聪明的人说,让每个字符和符号都有一个真正的值和数字,unicode就这样诞生了

“\u200e”是一个unicode字符,指示从左到右显示的文本。它没有键盘等价物。
saveFile=open(filename,“w”)正在尝试写入标准文本文件,它假定每个字符都可以用8位值写入u200e'的十进制值为8206。为了解决您的问题,您需要显式地选择utf-8这样的编码,以便您的字符串可以以可读的方式写入文件。只需将文件类型更改为saveFile=open(filename,“wb”)就可以在您尝试读取该文件时顺利完成

请查看Joel Spolsky在

上的这篇文章,这篇文章类似于。您的问题是unicode的一个特性。一开始有ASCII码,所有人都需要128个字符

然后一些聪明的人看到,一个字符的8位可以给他们256个字符,因此就产生了代码页,不同的系统会使用128-256个字符作为其他语言的符号和字母。所有这些都很好,直到人们想在一个文件中表示一种以上的语言,或者说,天哪,一种超过256个符号的语言

还有一些聪明人说,多用些比特!但是有多少人16岁,32岁?但是如果我不想让我的文件大小增加一倍或四倍呢?更聪明的人说“简单,我们将使用编码”,因此诞生了utf-8和ISO 8859-1及其同类产品。更聪明的人说,让每个字符和符号都有一个真正的值和数字,unicode就这样诞生了

“\u200e”是一个unicode字符,指示从左到右显示的文本。它没有键盘等价物。
saveFile=open(filename,“w”)正在尝试写入标准文本文件,它假定每个字符都可以用8位值写入u200e'的十进制值为8206。为了解决您的问题,您需要显式地选择utf-8这样的编码,以便您的字符串可以以可读的方式写入文件。只需将文件类型更改为saveFile=open(filename,“wb”)就可以在您尝试读取该文件时顺利完成

看看这篇来自乔尔·斯波尔斯基的文章

    import requests
    from bs4 import BeautifulSoup
    import os


url = "https://www.google.pt/search?q=hello"
req = requests.get(url)
resp = req.text
soup = BeautifulSoup(resp,"html.parser")
soup = soup.prettify()


dir_list = os.listdir()
if "Image Retriever Files" not in dir_list:
        os.makedir("Image Retriever Files")
curDir = os.curdir
filename = curDir+"/Image Retriever Files/Search Results.html"
saveFile = open(filename,"w")
saveFile.write(soup)
saveFile.close()
import requests
from bs4 import BeautifulSoup
import os

url = "https://www.google.pt/search?q=hello"
req = requests.get(url)
resp = req.text
soup = BeautifulSoup(resp, "html.parser")
soup = soup.prettify()

dir_list = os.getcwd()
if "imageFile" not in dir_list:
    os.mkdir("imageFile")
curDir = os.curdir
filename = curDir + "/imageFile/SearchResults.html"
saveFile = open(filename, "wb")
saveFile.write('files')
saveFile.close()