Помощь в этом содержании добычи + красивый суп - PullRequest
0 голосов
/ 15 июля 2011

Я пытаюсь извлечь данные с сайта в этом формате

<div id=storytextp class=storytextp align=center style='padding:10px;'> 
<div id=storytext class=storytext> 
<div class='a2a_kit a2a_default_style' style='float:right;margin-left:10px;border:none;'> 
..... extra stuff
</div>  **Main Content**
</div>
</div>

Обратите внимание, что MainContent может содержать другие теги, но я хочу, чтобы весь контент, например, строка

Так что я сделал это

_divTag = data.find( "div" , id = "storytext" )
innerdiv = _divTag.find( "div" ) # find the first div tag
innerdiv.contents[0].replaceWith("") # replace with null

Таким образом, _divTag будет иметь только основное содержимое, но это не работает. Кто-нибудь может сказать, какую ошибку я делаю и как мне извлечь основной контент

1 Ответ

2 голосов
/ 15 июля 2011

Просто сделай _divTag.contents[2].

Возможно, ваше форматирование вводило вас в заблуждение - этот текст не относится к самому внутреннему тегу div (как покажет innerdiv.text, innerdiv.contents или innerdiv.findChildren()).

Это прояснит ситуацию, если вы отступите от своего исходного XML:

<div id=storytextp class=storytextp align=center style='padding:10px;'> 
  <div id=storytext class=storytext> 
    <div class='a2a_kit a2a_default_style' style='float:right;margin-left:10px;border:none;'> 
      ..... extra stuff
    </div>  **Main Content**
  </div>
</div>

(PS: Мне не ясно, каково было намерение вашего innerdiv.contents[0].replaceWith("")? Подавить атрибуты? Новые строки? В любом случае, философия BS состоит не в том, чтобы редактировать дерево разбора, а просто игнорировать 99,9%, которые вас это не волнует. Документация BS здесь ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...