Python 美化组,将刮取结果保存在文本文件中

Python 美化组,将刮取结果保存在文本文件中,python,beautifulsoup,Python,Beautifulsoup,我正在尝试使用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.fin

我正在尝试使用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)
这很有效

然后,我尝试将结果写入文件,但它不起作用(


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

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

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

它怎么不起作用?您希望看到什么?是
log.txt,但是空的吗?您收到错误消息了吗?如果是,请发布完整的回溯。是的,文件是空的!我想您收到了
unicodeincoder错误错误,你为什么不把它包括在你的问题中?你需要在你的问题中添加这样的信息。它怎么不起作用?你期望看到什么?是
log.txt,但是空的吗?你收到错误消息了吗?如果是,请发布完整的回溯。是的,文件是空的!我想你得到了一个
UnicodeEncodeError
e你为什么不在你的问题中包括这些?你需要在你的问题中添加这样的信息。