我使用漂亮汤从烟草文档中提取元数据,如:http://legacy.library.ucsf.edu/tid/bxf03e00/xml
soup = BeautifulSoup(input)
meta_data = soup.document.metadata这将正确标识所有标记,但
<area>GEE,ED/OFFICE; N408</area>“美丽的汤”将区域标记标识为两个单独的标记:
<area></area>。GEE,ED/OFFICE; N408的空标记这个错误是因为<area>是一个HTML而发生的吗?如何获得漂亮的汤来正确地将GEE,ED/OFFICE; N408识别为<area>标记的内容?
发布于 2014-07-29 22:11:03
核心问题是您还没有告诉bs4它正在解析XML。它假设HTML -打印出来,并注意到解析器是如何将所有内容包装在<html><body>标记中的。
import requests
req = requests.get('http://legacy.library.ucsf.edu/tid/bxf03e00/xml')
doc = req.text
BeautifulSoup(doc).find('area')
Out[79]: <area></area>告诉它应该将其解析为XML (它将使用lxml进行解析,您需要安装该依赖项,否则会失败):
BeautifulSoup(doc,'xml').find('area')
Out[80]: <area>GEE,ED/OFFICE; N408</area>https://stackoverflow.com/questions/25025298
复制相似问题