Как сохранить текст с сайта, используя beautifulsoup в файл.txt?
Я новичок в Python и веб-соскоб. Я столкнулся с проблемой, и я не могу понять, как ее исправить.
Я пытаюсь скопировать текст с веб-сайта, и когда я распечатываю все в терминал, он появляется нормально.
Проблема в том, когда я пытаюсь сохранить его в текстовом файле. Я получаю эту ошибку:
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")
.
.
Надеюсь, кто-то может помочь разобраться.
1 ответ
Решение
Используя пакет unidecode, вы можете устранить ошибку.
from unidecode import unidecode
for item in g_data:
print item.text
Case_info.write(unidecode (item.text+"\n"))