当我在一堆网址上运行循环以找到这些网页上的所有链接(在某些Div中)时,我会收到此错误:
Traceback (most recent call last):
File "file_location", line 38, in <module>
out.writerow(tag['href'])
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2026' in position 0: ordinal not in range(128)
我写的与此错误相关的代码是:
out = csv.writer(open("file_location", "ab"), delimiter=";")
for tag in soup_3.findAll('a', href=True):
out.writerow(tag['href'])
有没有办法解决这个问题,可能使用if语句来忽略任何有Unicode错误的网址?
提前感谢您的帮助。
答案 0 :(得分:6)
您可以将writerow方法调用包装在try
中并捕获异常以忽略它:
for tag in soup_3.findAll('a', href=True):
try:
out.writerow(tag['href'])
except UnicodeEncodeError:
pass
但你几乎肯定想为你的CSV文件选择ASCII以外的编码(utf-8,除非你有充分的理由使用别的东西),并用codecs.open()
而不是内置的方式打开它在open
。