首页 > 解决方案 > BeautifulSoup 使用可迭代而不是字符串?

问题描述

我正在使用 bs4 和 python 3.5 解析维基百科元数据文件

这适用于从(更大的)文件的测试切片中提取:

from bs4 import BeautifulSoup

with open ("Wikipedia/test.xml", 'r') as xml_file:
    xml = xml_file.read()

print(BeautifulSoup(xml, 'lxml').select("timestamp"))

问题是元数据文件都是 12+ gigs,所以我不想在 ensoupification 之前将整个文件作为一个字符串啜饮,我想让 BeautifulSoup 作为迭​​代器读取数据(甚至可能从 gzcat 读取数据以避免数据坐在未压缩的文件中)。

但是,我尝试将字符串以外的任何东西交给 BS 都会导致它窒息。有没有办法让 BS 以流而不是字符串的形式读取数据?

标签: pythonxmlbeautifulsoupxml-parsing

解决方案


你可以给 BS 一个文件句柄对象。

with open("Wikipedia/test.xml", 'r') as xml_file:
    soup = BeautifulSoup(xml_file, 'lxml')

这是制作汤的文档中的第一个示例


推荐阅读