Как сохранить текст с сайта, используя 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"))
Другие вопросы по тегам