1

我尝试将文档中的表格保存为目录下的文件,如下所示:

for table in tables:
    tableString = html.tostring(table)
    fileref=open('c:\\Users\\ahn_133\\Desktop\\appleTables\\Apple-' + str(count) + '.htm', 'w')
    fileref.write(tableString)
    fileref.close()
    count+=1

但是,我不断收到如下错误:

Traceback (most recent call last):
  File "<pyshell#27>", line 4, in <module>
    fileref.write(tableString)
TypeError: must be str, not bytes

我正在使用 Python 3.3 并安装了 lxml-3.0.1.win32-py3.3.‌exe

我该如何解决这个错误?

4

1 回答 1

2

lxml 的tostring方法返回一个字节字符串 ( bytes),因为它已经被编码。这是必要的,因为 XML/HTML 文档可以指定自己的编码,而且最好是正确的!

只需以二进制模式打开文件:

for table in tables:
    tableString = html.tostring(table)
    filename = r'c:\Users\ahn_133\Desktop\appleTables\Apple-' +str(count)+ '.htm'
    with open(filename, 'wb') as fileref:
        #                 ^
        fileref.write(tableString)
    count+=1
于 2012-11-22T16:15:50.197 回答