Skip to main content
 首页 » 编程设计

python之如何获得比赛号码 n 正则表达式

2024年10月25日30kevingrace

我有这个 html 文本:

<div> 
     <div class="item1">  value 1 </div> 
                \n 
     <div class="item1">  value 2 </div> 
               \n 
     <div class="item1">  value 3 </div>  
 
</div> 

div标签之间有未知文本:

我想得到 value 3

我试过这个:re.findall(r'class="item1".*?{3}>(.*?)</div>',x,re.S)

但是我得到了无效的重复错误,因为我使用了 {3},怎么才能得到第三个匹配项?

请您参考如下方法:

通过 BeautifulSoup css selectors .

>>> from bs4 import BeautifulSoup 
>>> s = """<div> 
     <div class="item1">  value 1 </div> 
 
     <div class="item1">  value 2 </div> 
 
     <div class="item1">  value 3 </div>  
 
</div>""" 
>>> soup = BeautifulSoup(s) 
>>> soup 
<html><body><div> 
<div class="item1">  value 1 </div> 
<div class="item1">  value 2 </div> 
<div class="item1">  value 3 </div> 
</div></body></html> 
>>> [i.string for i in soup.select('div > div[class~=item1]')[-1]] 
['  value 3 '] 
>>> [i.string.strip() for i in soup.select('div > div[class~=item1]')[-1]] 
['value 3'] 

正如其他人所说,不要使用正则表达式解析 html 文件。

>>> re.findall(r'<div\s+class="item1">\s*(.*?)\s+</div>', s)[-1] 
'value 3'