find_all具有多个包含指定的两个属性值的标记的表达式

时间:2019-05-31 12:13:37

标签: python html regex web-scraping beautifulsoup

我正在努力从属性值分别为h5和ls3的HTML文件中提取所有标签,但是我不确定如何格式化搜索,因此它不会返回h5的所有实例和ls3的所有实例。

regex = re.compile('h5')
re2 = re.compile('ls3')

ly = []


for EachPart in soup.find_all("div", {"class": regex}):
    ly.append(EachPart)

这目前仅在搜索h5(按预期方式),但是如何格式化find_all搜索以与re2一起搜索regex?实际上,在下面,我需要提取包含h5和ls3的标签,而不是仅包含h5的标签

HTML标记示例:

<div class="t m0 x42 h5 y18b ff2 fs2 fc0 sc0 ls0 ws0">total </div>

<div class="t m0 xbd h5 y18b ff2 fs2 fc0 sc0 ls0 ws0"> </div>

<div class="t m0 x79 h5 y18b ff2 fs2 fc0 sc0 ls3 ws0">£m<span class="ls0"> </span></div>

<div class="t m0 x0 h5 y628 ff2 fs2 fc0 sc0 ls3 ws0">17.<span class="ls0"> <span class="_ _4"></span>Website policy<span class="_ _0"></span> </span></div>

1 个答案:

答案 0 :(得分:0)

使用具有AND语法的css选择器。下面指定了具有两个属性的元素。比find和正则表达式更有效。

items = [item.text for item in soup.select('.ls3.h5')]