Estou usando o Python 3.7. Desejo localizar todos os elementos em minha página HTML que possuem um atributo, "data-permalink", independentemente de qual seja seu valor, mesmo se o valor estiver vazio. No entanto, estou confuso sobre como fazer isso. Estou usando o pacote bs4 e tentei o seguinte
soup = BeautifulSoup(html)
soup.findAll("data-permalink")
[]
soup.findAll("a")
[<a href=" ... </a>]
soup.findAll("a.data-permalink")
[]
O atributo normalmente só é encontrado em tags âncora em minha página, daí minha tentativa malsucedida de "a.data-permalink". Eu gostaria de retornar os elementos que contêm o atributo.
Seu seletor é inválido
soup.findAll("a.data-permalink")
deve ser usado para o método, .select()
mas ainda assim é inválido porque significa selecionar <a>
com a classe e não com o atributo.
para combinar tudo, use o *
paraselect()
.select('*[data-permalink]')
ou True
se estiver usandofindAll()
.findAll(True, attrs={'data-permalink' : True})
exemplo
from bs4 import BeautifulSoup
html = '''<a data-permalink="a">link</a>
<b>bold</b>
<i data-permalink="i">italic</i>'''
soup= BeautifulSoup(html, 'html.parser')
permalink = soup.select('*[data-permalink]')
# or
# permalink = soup.findAll(True, attrs={'data-permalink' : True})
print(permalink)
Resultados, o <b>
elemento é ignorado
[<a data-permalink="a">link</a>, <i data-permalink="i">italic</i>]
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras