UnicodeEncodeError:' cp950'编解码器不能编码字符' \ u810f'位置67:非法多字节序列

时间:2017-10-19 15:55:20

标签: python unicode web-scraping encode

我抓了一个网页,它们包含一些繁体中文,简体中文和英文的文章。将它们保存在数据和打印中没有问题,但是当我尝试将它们写入我的文件夹时,它出错了。我尝试了不同的方法将它们编码为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'

0 个答案:

没有答案