首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BeautifulSoup误解了<area>标签

BeautifulSoup误解了<area>标签
EN

Stack Overflow用户
提问于 2014-07-29 21:27:43
回答 1查看 121关注 0票数 1

我使用漂亮汤从烟草文档中提取元数据,如:http://legacy.library.ucsf.edu/tid/bxf03e00/xml

代码语言:javascript
复制
soup = BeautifulSoup(input)
meta_data = soup.document.metadata

这将正确标识所有标记,但

代码语言:javascript
复制
<area>GEE,ED/OFFICE; N408</area>

“美丽的汤”将区域标记标识为两个单独的标记:

  • 一个空的区域标记<area></area>
  • 带有内容GEE,ED/OFFICE; N408的空标记

这个错误是因为<area>是一个HTML而发生的吗?如何获得漂亮的汤来正确地将GEE,ED/OFFICE; N408识别为<area>标记的内容?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-29 22:11:03

核心问题是您还没有告诉bs4它正在解析XML。它假设HTML -打印出来,并注意到解析器是如何将所有内容包装在<html><body>标记中的。

代码语言:javascript
复制
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进行解析,您需要安装该依赖项,否则会失败):

代码语言:javascript
复制
BeautifulSoup(doc,'xml').find('area')
Out[80]: <area>GEE,ED/OFFICE; N408</area>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25025298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档