gpt4 book ai didi

python - 在我收到此错误 : 'ascii' codec can't encode character u'\u2122' in position 之前,抓取工作正常

转载 作者:行者123 更新时间:2023-11-28 16:38:53 26 4
gpt4 key购买 nike

我只接受了几周的 python 培训,所以我怀疑这个问题有一个简单的解决方案。但对我来说这很令人沮丧,在为此工作了几个小时之后,我现在向您寻求帮助!

我试图抓取的网站组织良好(请参阅 https://twam2dcppennla6s.onion.to/),我编写的代码抓取了 26 页的大约一半,直到我收到此错误消息:

Traceback (most recent call last):
File "SR2works4real2.py", line 18, in <module>
csvWriter.writerows(jsonObj['vendors'])
File "/usr/lib/python2.7/csv.py", line 154, in writerows
return self.writer.writerows(rows)
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2122' in position 8: ordinal not in range(128)

我的代码是:

import urllib2, json,csv
htmlTxt=""


urlpart1='https://twam2dcppennla6s.onion.to/vendors.php?_dc=1393967362998&start='
pageNum=0
urlpart2='&limit=30&sort=%5B%7B%22property%22%3A%22totalFeedback%22%2C%22direction%22%3A%22DESC%22%7D%5D'
csvFile=open('S141.csv','wb')
csvWriter=csv.DictWriter(csvFile,['name','vendoringTime','lastSeen','avgFeedback','id','totalFeedback','united','shipsTo','shipsFrom'],delimiter=',', quotechar='"', quoting=csv.QUOTE_ALL)
csvWriter.writeheader()

while htmlTxt != "{\"vendors\":[]}":
print("Page "+str(pageNum)+"...")
pageNum+=30
response=urllib2.urlopen((urlpart1)+str(pageNum)+(urlpart2))
htmlTxt=response.read()
htmlTxt.encode('utf-8')
jsonObj=json.loads(htmlTxt)
csvWriter.writerows(jsonObj['vendors'])

#print(str(jsonObj))

csvFile.close()

我希望有人可以提供帮助!

最佳答案

这是商标符号的 unicode:http://www.marathon-studios.com/unicode/U2122/Trade_Mark_Sign

由于您正在抓取网页,因此您可能会看到更多此类错误,因此替换它可能适用于此页面,但不适用于其他带有其他符号的页面。

csv 模块在写入之前将您的 unicode 转换为 ascii。我建议你在给它文本之前做同样的事情,然后自己清理它,也就是说,而不是

htmlTxt.encode('utf-8')

htmlTxt.encode('ascii', 'ignore')

然后检查文本,看看它是否适合您的目的。

编辑

这是我在 Python 3 中的输出:

>>> u'\u2122'.encode('ascii')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character '\u2122' in position 0: ordinal not in range(128)
>>> u'\u2122'.encode('ascii', 'ignore')
b''

和 Python 2.6:

>>> u'\u2122'.encode('ascii')
Traceback (most recent call last):
File "<pyshell#92>", line 1, in <module>
u'\u2122'.encode('ascii')
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2122' in position 0: ordinal not in range(128)
>>> u'\u2122'.encode('ascii', 'ignore')
''

关于python - 在我收到此错误 : 'ascii' codec can't encode character u'\u2122' in position 之前,抓取工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22184178/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com