我真的希望能够让美丽的汤匹配任何标签列表,像这样。我知道attr接受正则表达式,但有什么美丽的汤可以让你这样做吗?美丽的汤使用正则表达式来查找标签?
soup.findAll("(a|div)")
输出:
<a> ASDFS
<div> asdfasdf
<a> asdfsdf
我的目标是创建一个刮刀可以抓住从站点表。有时候,标签的命名不一致,我希望能够输入一个标签列表来命名表中的'数据'部分。
我真的希望能够让美丽的汤匹配任何标签列表,像这样。我知道attr接受正则表达式,但有什么美丽的汤可以让你这样做吗?美丽的汤使用正则表达式来查找标签?
soup.findAll("(a|div)")
输出:
<a> ASDFS
<div> asdfasdf
<a> asdfsdf
我的目标是创建一个刮刀可以抓住从站点表。有时候,标签的命名不一致,我希望能够输入一个标签列表来命名表中的'数据'部分。
find_all()
是美丽的汤搜索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查找包含标签a
或div
:
>>> import re
>>> soup.find_all(re.compile("(a|div)"))
是看文档...
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('crummy.com/')})
这个例子查找所有<a>
标签链接到包含子'crummy.com'
网站。
(我知道这是一个非常古老的职位,但希望有人会发现这个额外的信息非常有用。)
可以使用的标签列表:'soup.find_all([“一”,“格”] )' –
@ behzad.nouri你一定要把这个作为答案。 – alecxe