我抓了一个网页,它们包含一些繁体中文,简体中文和英文的文章。将它们保存在数据和打印中没有问题,但是当我尝试将它们写入我的文件夹时,它出错了。我尝试了不同的方法将它们编码为UTF-8,但仍然无法正常工作。顺便说一句,我在Anaconda的Jupyter上编辑了它们。
代码:
for urls in all:
re=requests.get(urls)
soup=BeautifulSoup(re.text.encode('utf-8'), "html.parser")
title_tag = soup.select_one('.mms_article_title')
#print(title_tag.text)
list=[]
for tag in soup.select('.mms_article_content'):
list.append(tag.text)
list=([c.replace('\n', '') for c in list])
list=([c.replace('\r', '') for c in list])
list=([c.replace('\t', '') for c in list])
list=([c.replace(u'\xa0', u' ') for c in list])
list= (', '.join(list))
data={
"Title" : title_tag.text,
"Article": list
}
save_path= 'C:/json_n/'
file_name=save_path+'%s.json' % title_tag.text
with open(file_name, 'w') as f:
print(file_name)
file = json.dumps(data,ensure_ascii=False)
f.write(file)
我有1700个文件,它只打印2个file_name。它还将这两个文件保存在文件夹" json_n"中,但只有第一个json文件成功保存数据,第二个文件是空的,因为它的数据是简体中文,无法写入。
C:/json_n/肝動脈栓塞術.json
C:/json_n/心臟電氣生理學檢查注意事項(簡體中文).json
错误:
UnicodeEncodeError Traceback (most recent call last)
<ipython-input-39-e73321a3e622> in <module>()
21 print(file_name)
22 file = json.dumps(data,ensure_ascii=False)
---> 23 f.write(file)
UnicodeEncodeError: 'cp950' codec can't encode character '\u810f' in position 67: illegal multibyte sequence
当我在open中设置编码时:
with open(file_name, 'w', encoding="utf-8") as f:
它仍打印出2个file_name,第二个仍为空。
C:/json_n/肝動脈栓塞術.json
C:/json_n/心臟電氣生理學檢查注意事項(簡體中文).json
错误:
OSError Traceback (most recent call last)
<ipython-input-44-256bcf14fcbe> in <module>()
18 save_path= 'C:/json_n/'
19 file_name=save_path+'%s.json' % title_tag.text
---> 20 with open(file_name, 'w', encoding="utf-8") as f:
21 print(file_name)
22 file = json.dumps(data,ensure_ascii=False)
OSError: [Errno 22] Invalid argument: 'C:/json_n/如何使用胰島素空針抽取短效型胰島素?.json'