在 Python 中使用 BeautifulSoup 获取直接父标签

Get immediate parent tag with BeautifulSoup in Python

我已经研究过这个问题,但还没有看到解决这个问题的实际解决方案。我正在使用 BeautifulSoup 和 Python,我要做的是从一个页面获取所有图像标签,遍历每个图像标签并检查每个标签以查看它的直接父级是否是锚标签。

这是一些伪代码:

html = BeautifulSoup(responseHtml)

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

对此有什么想法吗?

您需要检查 parent's 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 selector:

检索具有直接 a 父级的 img 标签
soup.select('a > img')