2015-01-10 14 views
5

Ho cercato questa domanda ma non ho visto una soluzione effettiva per risolvere questo problema. Sto usando BeautifulSoup con Python e quello che sto cercando di fare è ottenere tutti i tag immagine da una pagina, scorrere ciclicamente ciascuno e controllare ciascuno per vedere se il genitore immediato è un tag di ancoraggio.Ottieni tag padre immediato con BeautifulSoup in Python

Ecco alcuni pseudo codice:

html = BeautifulSoup(responseHtml) 

for image in html.findAll('img'): 
    if (image.parent.name == 'a'): 
     image.hasParent = image.parent.link 

Tutte le idee su questo?

+1

Questi documenti implicano che il tuo pseudocodice è praticamente corretto: http://www.crummy.com/software/BeautifulSoup/bs4/doc/#parent – Ben

risposta

5

è necessario controllare parent s' name:

for img in soup.find_all('img'): 
    if img.parent.name == 'a': 
     print "Parent is a link" 

Demo:

>>> from bs4 import BeautifulSoup 
>>> 
>>> data = """ 
... <body> 
...  <a href="google.com"><img src="image.png"/></a> 
... </body> 
... """ 
>>> soup = BeautifulSoup(data) 
>>> img = soup.img 
>>> 
>>> img.parent.name 
a 

È possibile anche recuperare i img tag che hanno un a controllante diretta utilizzando un CSS selector:

soup.select('a > img') 
+0

Grazie per l'aiuto! Usando 'img.parent.name', questo sarà sempre il genitore immediato, non importa quale sia il giusto? – stwhite

+1

@stwhite corretto, felice che abbia aiutato. – alecxe

Problemi correlati