用正则表达式查找标签的靓汤?

2024-04-28 06:49:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我真的很想让靓汤能和任何标签匹配,就像这样。我知道attr接受regex,但靓汤里有什么东西可以让你这么做吗?

soup.findAll("(a|div)")

输出:

<a> ASDFS
<div> asdfasdf
<a> asdfsdf

我的目标是创建一个刮刀,可以从网站抓取表。有时标记的命名不一致,我希望能够输入一个标记列表来命名表的“数据”部分。


Tags: 标记div目标列表网站标签命名regex
3条回答

是的,请参阅文档。。。

http://www.crummy.com/software/BeautifulSoup/bs3/documentation.html

import re

soup.findAll(re.compile("^a$|(div)"))

请注意,还可以使用正则表达式在标记的属性中搜索。例如:

import re
from bs4 import BeautifulSoup

soup.find_all('a', {'href': re.compile(r'crummy\.com/')})

此示例查找链接到包含子字符串'crummy.com'的网站的所有<a>标记。

(我知道这是一个很老的帖子,但希望有人会发现这个额外的信息有用。)

^{}是美丽汤搜索API中最受欢迎的方法。

你可以通过不同的过滤器。另外,通过list查找多个标记:

>>> soup.find_all(['a', 'div']) 

示例

>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup('<html><body><div>asdfasdf</div><p><a>foo</a></p></body></html>')
>>> soup.find_all(['a', 'div'])
[<div>asdfasdf</div>, <a>foo</a>]

或者可以使用regular expression查找包含adiv的标记:

>>> import re
>>> soup.find_all(re.compile("(a|div)"))

相关问题 更多 >