我正试图在beautifulsoup4
方法中使用find_all()
和正则表达式提取这些div
<div class="prod roundedBox">
<div class="prod roundedBox last">
我尝试了不同的可能性,但我无法使用单词 prod roundedBox 来提取标签。我想用两个字!如果我使用其中一个,我会使用其他不需要的标签。
re.compile("prod.roundedBox")
re.compile("prod\sroundedBox.*")
无效。
任何想法!?
答案 0 :(得分:2)
您只需使用BeautifulSoup
即可找到结果。
import bs4
html = '''
<div class="example">example</div>
<div class="prod roundedBox">foo</div>
<div class="prod roundedBox last">bar</div>
'''
soup = bs4.BeautifulSoup(html)
soup(attrs={'class' : ['prod', 'roundedBox']})
如果你想使用正则表达式,这是一个例子:
import re
import bs4
soup = bs4.BeautifulSoup(html)
soup(attrs={'class' : re.compile(r'^prod')})
输出
[<div class="prod roundedBox">foo</div>, <div class="prod roundedBox last">bar</div>]
答案 1 :(得分:0)
不需要正则表达式。这就是css选择器的用途。
soup.select('div.prod.roundedBox')
你可以抓住你喜欢的任何属性,上面的内容会抓住课程prod
和roundedBox
。参见:
soup.select('div.prod.roundedBox')
Out[38]: [<div class="prod roundedBox"></div>, <div class="prod roundedBox last"></div>]
soup.select('div.prod.roundedBox.last')
Out[39]: [<div class="prod roundedBox last"></div>]