2013-12-08 29 views
0

我需要在html中查找带有'random'id的元素。 我的代码是这样的:BeautifulSoup中的正则表达式4

from bs4 import BeautifulSoup 
import re 
soup = BeautifulSoup(html) 
print soup.find(id="id_123456_name") 

123456 - 可每一次变化,所以我觉得this,但我无法理解,如何使用它。

我尝试:

soup.find(id="id_%s_name" % (re.compile("\d+"))) 

但无所获。有什么问题?

回答

1

你需要让整个值正则表达式对象:

soup.find(id=re.compile("id_\d+_name")) 

在你的版本,你还在寻找一个字符串,而不是一个正则表达式,因为你转换的正则表达式对象改为一个字符串。字符串有一个非常奇怪的值:

>>> import re 
>>> "id_%s_name" % (re.compile("\d+")) 
'id_<_sre.SRE_Pattern object at 0x10f111750>_name' 

当然在HTML文件中找不到这个值。

+0

不错的代码,谢谢 – tim

相关问题