我可以像这样做一个findall正则表达式吗?

时间:2014-10-22 03:38:29

标签: python regex beautifulsoup findall

所以我需要在看起来像这样的行之后抓住数字

<div class="gridbarvalue color_blue">79</div> 

<div class="gridbarvalue color_red">79</div> 

我有没有办法findAll('div', text=re.recompile('<>))找到gridbarvalue color_<red or blue>的标签?

我正在使用beautifulsoup。

也很抱歉,如果我没有明白我的问题,我对此很缺乏经验。

2 个答案:

答案 0 :(得分:1)

class是一个Python关键字,因此当使用它作为关键字参数时,BeautifulSoup希望您在其后面添加下划线

>>> soup.find_all('div', class_=re.compile(r'color_(?:red|blue)'))
[<div class="gridbarvalue color_blue">79</div>, <div class="gridbarvalue color_red">79</div>]

要同时匹配文字,请使用

>>> soup.find_all('div', class_=re.compile(r'color_(?:red|blue)'), text='79')
[<div class="gridbarvalue color_blue">79</div>, <div class="gridbarvalue color_red">79</div>]

答案 1 :(得分:0)

import re
elems = soup.findAll(attrs={'class' : re.compile("color_(blue|red)")})
for each e in elems:
    m = re.search(">(\d+)<", str(e))
    print "The number is %s" % m.group(1)