1

我正在尝试使用下面提到的代码获取特定标签的父元素:

# -*- coding: cp1252 -*-
import csv
import urllib2
import sys
import time
from bs4 import BeautifulSoup
from itertools import islice
page1= urllib2.urlopen('http://www.sfr.fr/mobile/telephones?vue=000029&tgp=toutes-les-offres&typesmartphone=se-android&typesmartphone=se-apple&typesmartphone=se-bada&typesmartphone=se-rim-blackberry&typesmartphone=se-windows&p=0').read()
soup1 = BeautifulSoup(page1)
price_parent = soup1.findParents('div')
print price_parent

问题:运行此代码后我得到的输出返回 Null 数组[],如果我使用findParent而不是父母,那么它也返回None值。

我的实际问题类似于这个BeautifulSoup - findAll not within certain tag

为了解决我的实际问题,我需要获得我正在获得None价值的元素的父母,如上所述。

请帮助我解决这个问题并原谅我的无知,因为我是编程新手。

4

1 回答 1

0

.findParents()不做你认为它做的事。它找到与搜索匹配的当前元素的父元素。您正在尝试查找已经是顶级元素的页面元素的父级。

如果你有这样的结构:

<html>
    <body>
        <div class="foo">
            <span id="bar">Some text</span>
        </div>
    </body>
</html>

soup整个结构的 BeautifulSoup 变量在哪里,你可以找到span

spanelement = soup.find('span', id='bar')

然后调用.findParent('div')会返回一个结果,即<div class="foo">元素。

因此,调用.findParents()顶级元素将始终返回一个空结果,没有父母。在确实有父元素的东西上调用它。

于 2013-01-03T09:24:15.547 回答