我是python和web抓取的新手。我遇到了一个问题,我似乎无法弄清楚如何修复它。
我正在尝试从网站上复制文本,当我将所有内容打印到终端时,它弹出正常。
问题是当我尝试将其保存到文本文件时。我收到这个错误:
Traceback (most recent call last):
File "t3.py", line 43, in <module>
Case_info.write(item.text+"\n")
UnicodeEncodeError: 'ascii' codec can't encode characters in position 16-17: ordinal not in range(128)
我不确定如何修复它。我特定部分的代码如下:
import mechanize
import requests
from bs4 import BeautifulSoup
import re
.
.
.
def main():
b=mechanize.Browser()
return b.open(mainlink+case)
html_text=main().read()
soup = BeautifulSoup(html_text)
g_data=soup.findAll("div",{"class":"Print"})
Case_info=open("case_info.txt", "w+")
for item in g_data:
print item.text
Case_info.write(item.text+"\n")
Case_info.close()
另外,导致我的一些困惑的原因是这部分代码完全完全相同。
.
.
links = soup.findAll('a',href=True)
.
.
for link in links:
if re.findall('keyword',link['href']):
#print link.text, link['href']
files.write(link['href']+"\n")
names.write(link.text+"\n")
.
.
希望有人可以帮忙解决问题。
答案 0 :(得分:0)
使用unidecode包,可以消除错误。
from unidecode import unidecode
for item in g_data:
print item.text
Case_info.write(unidecode (item.text+"\n"))