from - install beautifulsoup python 3
Id de coincidencia en BeautifulSoup (4)
Esto funciona para mí:
from bs4 import BeautifulSoup
import re
html = ''<div id="post-45">...</div> <div id="post-334">...</div>''
soupHandler = BeautifulSoup(html)
for match in soupHandler.find_all(''div'', id=re.compile("post-")):
print match.get(''id'')
>>>
post-45
post-334
Estoy usando el módulo BeautifulSoup - python. Tengo que encontrar cualquier referencia a los div''s con id como: ''post- #''. Por ejemplo:
<div id="post-45">...</div>
<div id="post-334">...</div>
¿Cómo puedo filtrar esto?
html = ''<div id="post-45">...</div> <div id="post-334">...</div>''
soupHandler = BeautifulSoup(html)
print soupHandler.findAll(''div'', id=''post-*'')
> []
Puedes pasar una función para findAll :
>>> print soupHandler.findAll(''div'', id=lambda x: x and x.startswith(''post-''))
[<div id="post-45">...</div>, <div id="post-334">...</div>]
O una expresión regular:
>>> print soupHandler.findAll(''div'', id=re.compile(''^post-''))
[<div id="post-45">...</div>, <div id="post-334">...</div>]
Ya que está pidiendo que coincida con "post- # somenumber #", es mejor precisar con
import re
[...]
soupHandler.findAll(''div'', id=re.compile("^post-/d+"))
soupHandler.findAll(''div'', id=re.compile("^post-$"))
Me parece bien.