Python 如何使用BeautifulSoup解析多个表并将它们保存到csv文件

Python 如何使用BeautifulSoup解析多个表并将它们保存到csv文件,python,html,csv,beautifulsoup,Python,Html,Csv,Beautifulsoup,我有一个程序,快完成了,它只缺少我挣扎的最后一部分。我需要从许多网页上删除(如果你需要查看一个示例,你需要在本网站上用03732填写案例编号,用16填写案例年份,然后单击第一次提交。)contentHolder div上的表格并将其写入csv文件,以获得类似以下内容: 案例状态、可用状态、案例编号、PA/03732/16开发位置:40。。。。 类似这样的内容适用于网页上的所有表格以及许多网页。 我写了一些代码试图做到这一点,但它不起作用,当我运行它时,它会在csv文件上输出:它甚至不会完成所有页

我有一个程序,快完成了,它只缺少我挣扎的最后一部分。我需要从许多网页上删除(如果你需要查看一个示例,你需要在本网站上用03732填写案例编号,用16填写案例年份,然后单击第一次提交。)contentHolder div上的表格并将其写入csv文件,以获得类似以下内容: 案例状态、可用状态、案例编号、PA/03732/16开发位置:40。。。。 类似这样的内容适用于网页上的所有表格以及许多网页。 我写了一些代码试图做到这一点,但它不起作用,当我运行它时,它会在csv文件上输出:它甚至不会完成所有页面,因为它会在中间返回一个错误:

Traceback (most recent call last):
  File "C:\PROJECT\pdfs\converterpluspa.py", line 93, in <module>
    csv.writer(f).writerow(answer)
UnicodeEncodeError: 'ascii' codec can't encode character u'\u201c' in position 0: ordinal not in range(128)
编辑:我试图将最后一行更改为
csv.writer(f).writerow(answer.encode(“utf-8”)
,但没有成功,它打印了另一条错误消息:

Traceback (most recent call last):
  File "C:\PROJECT\pdfs\converterpluspa.py", line 93, in <module>
    csv.writer(f).writerow(answer.encode("utf-8"))
  File "C:\Python27\lib\codecs.py", line 706, in write
    return self.writer.write(data)
  File "C:\Python27\lib\codecs.py", line 369, in write
    data, consumed = self.encode(object, self.errors)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 25496: ordinal not in range(128)
回溯(最近一次呼叫最后一次):
文件“C:\PROJECT\pdfs\converterpluspa.py”,第93行,在
csv.writer(f.writerow)(应答.编码(“utf-8”))
写入文件“C:\Python27\lib\codecs.py”,第706行
返回self.writer.write(数据)
写入文件“C:\Python27\lib\codecs.py”,第369行
数据,消耗=self.encode(对象,self.errors)
UnicodeDecodeError:“ascii”编解码器无法解码位置25496处的字节0xe2:序号不在范围内(128)

最后的csv文件没有任何变化。

您需要使用UTF-8对输出进行编码。将最后一行更改为:

csv.writer(f, encoding="utf-8").writerow(answer.encode("utf-8"))

另外,将导入从
import csv
更改为
import unicodesv as csv

我尝试了,但没有效果。我更新了我的问题,以便您可以更好地看到出错的地方。我更新了我的答案,以反映您发布的错误。请现在试一试。现在它说Unicodesv不是一个模块,它不存在,请记住我使用的是python 2.7
csv.writer(f, encoding="utf-8").writerow(answer.encode("utf-8"))