如何使用beautifulsoup到.txt文件从网站保存文本?

时间:2014-08-05 07:46:52

标签: python text web-scraping beautifulsoup mechanize

我是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")
.
.

希望有人可以帮忙解决问题。

1 个答案:

答案 0 :(得分:0)

使用unidecode包,可以消除错误。

from unidecode import unidecode
for item in g_data:
  print item.text
  Case_info.write(unidecode (item.text+"\n"))