2015-01-10 62 views
5

私はこの質問を調査しましたが、これを解決する実際の解決策は見当たりませんでした。私はPythonでBeautifulSoupを使用しています。私が探しているのは、ページからすべてのイメージタグを取得し、それぞれをループし、それぞれが直接の親がアンカータグであるかどうかを確認することです。この上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、喜んで助けました。 – alecxe

関連する問題