2015-01-10 1 views
5

이 질문을 연구했지만 해결 방법이 없습니다. 나는 BeautifulSoup을 Python과 함께 사용하고 있습니다. 내가하고 싶은 것은 페이지의 모든 이미지 태그를 가져 와서 각각을 반복하고 각각의 이미지를 직접 확인하여 바로 부모가 앵커 태그인지 확인하는 것입니다. 이에Python에서 BeautifulSoup로 직접 부모 태그 가져 오기

html = BeautifulSoup(responseHtml) 

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

어떤 아이디어 :

여기에 몇 가지 의사 코드는?

+1

이 문서는 의사 코드가 정확하다는 것을 암시합니다 : http://www.crummy.com/software/BeautifulSoup/bs4/doc/#parent – Ben

답변

5

당신은 확인할 필요가 parentname :

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

데모 :

>>> 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 

또한 사용하여 직접 a 부모가있는 img 태그를 검색 할 수 CSS selector :

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

도움을 주셔서 감사합니다! 'img.parent.name'을 사용함으로써, 그것은 권리에 상관없이 항상 바로 부모가 될 것입니까? – stwhite

+1

@stwhite correct, glad it helped. – alecxe