我使用的是python2.7.2&BeautifulSoup(bs4)4.1.0。 从页面的html中获取感兴趣的项目时遇到问题。 我的直觉告诉我,问题是,有一个“模糊”标记匹配,它将文本视为格式错误的标记。在
下面是一个简化的片段来说明我的问题:
from bs4 import BeautifulSoup
html = "<span>Age 4, Pet Dog, Weight < 6 lbs (< 3 kgs)</span>"
soup = BeautifulSoup(html, 'lxml')
print soup.get_text()
# prints: "Age 4, Pet Dog, Weight"
soup2 = BeautifulSoup(html, 'html.parser')
print soup2.get_text()
# prints "Age 4, Pet Dog, Weight < 6 lbs (< 3 kgs)"
更严格的html.parser
给出了我感兴趣的文本;但是,该站点随机地抛出了损坏的html。这些html格式错误的页面将导致HTMLParser.HTMLParseError
。有没有一种方法可以使用lxml
解析器来获取我感兴趣的整行代码,还是丢失了这些信息?如果这些信息丢失了,还有其他选择吗?在
多亏了可能的重复Max Worg链接,我得出了这样的结论:在将输入文本发送到BeautifulSoup之前,必须“清除”输入文本。小于字符
<
是html中的保留字符,如果在文本中使用,则应转义到<
。在我编写了一个函数
escape_lt()
,它利用了这样一个事实:我要转义的每个<
后面都有一个空格字符,而所有其他html标记后面都没有空格。在相关问题 更多 >
编程相关推荐