我正在使用beautifulsoup从烟草文件中提取元数据,如下所示: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>
标签的内容?
答案 0 :(得分:1)
核心问题是你没有告诉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>