tutorial from find_next_sibling find_all beautifulsoup4 python beautifulsoup

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.