web-dev-qa-db-ja.com

PythonでBeautifulSoupを使用してすぐに親タグを取得する

私はこの質問を調査しましたが、これを解決する実際の解決策を見ていません。 PythonでBeautifulSoupを使用しており、ページからすべての画像タグを取得し、それぞれをループしてそれぞれをチェックして、直接の親がアンカータグであるかどうかを確認しています。

ここにいくつかの擬似コードがあります:

html = BeautifulSoup(responseHtml)

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

これに関するアイデアはありますか?

17
stwhite

parent をチェックする必要があります name

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

CSSセレクター を使用して、直接のimg親を持つaタグを取得することもできます。

soup.select('a > img')
26
alecxe