Проблема с поиском родителя определенного тега в html с использованием python

Я пытаюсь получить родительский элемент определенного тега, используя приведенный ниже код:

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

Проблема: Вывод, который я получаю после запуска этого кода, возвращает нулевой массив [], если я использую findParent вместо Parents, он также возвращает значение None.

Моя реальная проблема похожа на эту BeautifulSoup - findAll не в определенном теге

Чтобы решить мою актуальную проблему, мне нужно получить родителей элементов, для которых я получаю значение None, как указано выше.

Пожалуйста, помогите мне в решении этой проблемы и простите мое невежество, поскольку я новичок в программировании.


person Community    schedule 03.01.2013    source источник


Ответы (1)


.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() для элемента верхнего уровня всегда возвращает пустой результат, родителей нет. Вместо этого вызовите его для чего-то, что имеет родительский элемент.

person Martijn Pieters    schedule 03.01.2013