2

我正在尝试使用 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()

如何将我的结果保存在测试文件中?

4

1 回答 1

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 作为编解码器,但您可以选择任何可以处理您正在抓取的页面中使用的所有代码点的代码点。

于 2013-09-23T20:38:39.053 回答