BeautifulSoup可以区分大小写吗?

24 投票
6 回答
10294 浏览
提问于 2025-04-15 21:23

我正在尝试提取网页的Meta描述信息。但是我遇到了BeautifulSoup对大小写敏感的问题。

因为有些网页的标签是<meta name="Description,而有些则是<meta name="description

我的问题跟Stackoverflow上的一个问题很相似。

唯一的不同是我不能使用lxml,我必须使用BeautifulSoup。

6 个回答

17

正则表达式?现在我们又遇到了另一个问题

相反,你可以传入一个lambda表达式:

soup.findAll(lambda tag: tag.name.lower()=='meta',
    name=lambda x: x and x.lower()=='description')

(x and 可以避免在标签没有定义name属性时出现错误)

19

你可以给BeautifulSoup一个正则表达式,用来匹配属性。像下面这样

soup.findAll('meta', name=re.compile("^description$", re.I))

可能就能解决问题。这是从BeautifulSoup的文档上借来的。

10

稍微改动一下就能正常工作了。

soup.findAll('meta', attrs={'name':re.compile("^description$", re.I)})

撰写回答