BeautifulSoup可以区分大小写吗?
我正在尝试提取网页的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)})