我正在尝试使用BeautifulSoup从表中抓取数据并将其保存到文件中。我写了这个:
import urllib2
from bs4 import BeautifulSoup
url = "http://dofollow.netsons.org/table1.htm"
page = urllib2.urlopen(url).read()
soup = BeautifulSoup(page)
for tr in soup.find_all('tr')[2:]:
tds = tr.find_all('td')
print "%s, %s, %s" % (tds[0].text, tds[1].text, tds[2].text)
有效。
然后我尝试将结果写入文件,但它无法正常工作。 :(
logfile = open("log.txt", 'a')
logfile.write("%s,%s,%s\n" % (tds[0].text, tds[1].text, tds[2].text))
logfile.close()
如何将我的结果保存在测试文件中?
答案 0 :(得分:4)
BeautifulSoup为您提供Unicode数据,在将其写入文件之前需要对其进行编码。
如果您使用io
库,它会更容易,它允许您使用透明编码打开文件对象:
import io
with io.open('log.txt', 'a', encoding='utf8') as logfile:
for tr in soup.find_all('tr')[2:]:
tds = tr.find_all('td')
logfile.write(u"%s, %s, %s\n" % (tds[0].text, tds[1].text, tds[2].text))
with
语句负责为您关闭文件对象。
我使用UTF8作为编解码器,但您可以选择任何可以处理您正在抓取的页面中使用的所有代码点的内容。