парсинг HTML с использованием BeautifulSoup с дочерним и родительским div, имеющими один и тот же класс - PullRequest
0 голосов
/ 07 февраля 2012

У меня есть этот HTML-код, из которого я должен извлечь данные:

<html>
<head></head>
<body>
<div class="main">
  <div class="utlimate"><p>hello</p></div>
  <div class = "headline"><p>some text</p></div>
   <div class="content">
     <div class = "utimate"> <p>TOP</p>
        <div class ="utlimate"> <p>data1</p></div>
        <div class ="utlimate"> <p>it could be anything</p></div>
        <div class ="utlimate"> <p>not</p></div>
        <div class ="utlimate"> <p></p></div>

     </div>
   </div>
</div>
</body>
</html>

Мне нужен доступ к <div class="ultimate"> с <p>, значение которого равно «data1», «это может быть что угодно», «not ". Код, который я пытался для этого:

soup = BeautifulSoup(HTML_data)     #HTML_data is all html content
first_div = soup.find('div',{"class" : "content"})
second_div = first_div.find('div',{"class" : "utlimate"})
div_list = second_div.findall('div',{"class" : "utlimate"})

Я получил ошибку в своем коде Последняя строка Объект 'NoneType' не вызывается

Как получить доступтолько те div'ы ??? помогите

Ответы [ 2 ]

2 голосов
/ 07 февраля 2012

Попробуйте это:

soup = BeautifulSoup(HTML_data)     #HTML_data is all html content
first_div = soup.find('div',{"class" : "content"})
second_div = first_div.find('div',{"class" : "utimate"})
div_list = second_div.findAll('div',{"class" : "utlimate"})

Метод получения списка: findAll, а не findall. Во фрагменте HTML нет «предельного», они «выдающиеся» или «превосходные». Это опечатки?

1 голос
/ 07 февраля 2012

Суп отсутствует?

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

soup = BeautifulSoup(HTML_data)     #HTML_data is all html content
if soup ==None:
    //Error
else:
    c = soup.contents
    // Use RE here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...