我正在尝试使用BeautifulSoup html.parser进行解析,但该标记有问题,因为它的处理方式与其他标记不同:
在<title>
标记上,它按预期工作:
>>> BeautifulSoup("<title>Somalia’s Electoral Crisis in Extremis</title>", features='html.parser')
<title>Somalia’s Electoral Crisis in Extremis</title>
但是,在处理<link>
标记时,它会在开始标记中引入斜杠,并删除结束标记:
>>>BeautifulSoup("<link>https://warontherocks.com/2021/04/somalias-electoral-crisis-in-extremis/</link>", features='html.parser')
<link/>https://warontherocks.com/2021/04/somalias-electoral-crisis-in-extremis/
为什么要这样做
现在,如果我使用'lxml'
或'xml'
标记,它可以正常工作
>>> BeautifulSoup("<link>https://warontherocks.com/2021/04/somalias-electoral-crisis-in-extremis/</link>", features='lxml')
<html><head><link/></head><body><p>https://warontherocks.com/2021/04/somalias-electoral-crisis-in-extremis/</p></body></html>
我之所以使用html.parser
,是因为我还遇到了嵌套元素(如<something:tag>
)和CDATA
字符串。因此,如果可能的话,用lxml
解析CDATA(这对我来说不起作用)也是一个解决方案
我是否需要编写一些逻辑来决定使用哪个库来解析每个站点,或者是否有一种方法可以按原样使用BeautifulSoup来实现这一点
目前没有回答
相关问题 更多 >
编程相关推荐