Красивый суп найтиВсе не нашел всех

Я использую Caliber, чтобы сделать рецепт для веб-сайта.

Исходный веб-код:

  <section>

  <h1 class="fly-title">Leaders</h1>

    <article>
  <h2><a href="/node/21537908" class="package-link">Democracy and its enemies</a></h2>

    <a href="/node/21537908"><img src="http://media.economist.com/sites/default/files/imagecache/news_package_primary_landscape/20120123_LDC001_0.gif" alt="" title=""  class="imagecache imagecache-news_package_primary_landscape" width="412" height="232" /></a>  
  <p>
    In the coming year the people who run the world will change—and so could the ideas, predicts John Micklethwait    <a href="/node/21537908/comments#comments" title="Comments" class="comment-icon"><span>(0)</span></a>  </p>

</article>  
    <ul class="package-item"><li class="first"><div class="">
  <a href="/node/21537909" class="package-link">The year of self-induced stagnation</a>  <a href="/node/21537909/comments#comments" title="Comments" class="comment-icon"><span>(7)</span></a></div>
</li>
<li class="even"><div class="">
  <a href="/node/21537914" class="package-link">How to run the euro?</a>  <a href="/node/21537914/comments#comments" title="Comments" class="comment-icon"><span>(2)</span></a></div>
</li>
<li class=""><div class="">
  <a href="/node/21537916" class="package-link">Wanted: a fantasy American president</a>  <a href="/node/21537916/comments#comments" title="Comments" class="comment-icon"><span>(0)</span></a></div>
</li>
<li class="even"><div class="">
  <a href="/node/21537917" class="package-link">Poking goes public</a>  <a href="/node/21537917/comments#comments" title="Comments" class="comment-icon"><span>(7)</span></a></div>
</li>
<li class=""><div class="">
  <a href="/node/21537918" class="package-link">Varied company</a>  <a href="/node/21537918/comments#comments" title="Comments" class="comment-icon"><span>(0)</span></a></div>
</li>
<li class="even"><div class="">
  <a href="/node/21537919" class="package-link">All eyes on London</a>  <a href="/node/21537919/comments#comments" title="Comments" class="comment-icon"><span>(0)</span></a></div>
</li>
<li class="last"><div class="">
  <a href="/node/21537921" class="package-link">And now for some non-events</a>  <a href="/node/21537921/comments#comments" title="Comments" class="comment-icon"><span>(2)</span></a></div>
</li>
</ul>  
  </section>

Я хочу найти все <a href="/node/********" class="package-link">

Так что я использовал красивый суп

for section in soup.findAll('section'): 
...
    for post in section.findAll('a', attrs={'class':['package-link']})

Но был найден только первый (тот, что в <h2><a href="/node/21537908" class="package-link">Democracy and its enemies</a></h2>).

Как я могу найти их все?


person user1550725    schedule 25.07.2012    source источник


Ответы (1)


Работает на меня:

soup = BeautifulSoup.BeautifulSoup(xml)    
for section in soup.findAll("section"):
    for post in section.findAll('a', attrs={'class':['package-link']}):
        print post

приводит к:

<a href="/node/21537908" class="package-link">Democracy and its enemies</a>
<a href="/node/21537909" class="package-link">The year of self-induced stagnation</a>
<a href="/node/21537914" class="package-link">How to run the euro?</a>
<a href="/node/21537916" class="package-link">Wanted: a fantasy American president</a>
<a href="/node/21537917" class="package-link">Poking goes public</a>
<a href="/node/21537918" class="package-link">Varied company</a>
<a href="/node/21537919" class="package-link">All eyes on London</a>
<a href="/node/21537921" class="package-link">And now for some non-events</a>

Изменить

Версии, которые я использую:

  • Питон 2.7.3
  • Красивый суп 3.2.0
person Community    schedule 25.07.2012
comment
Я чувствую себя странно, почему это не работает для меня. Еще мой код: title = self.tag_to_string(post) url = post['href'] - person user1550725; 25.07.2012
comment
Что означает self? Пожалуйста, отредактируйте свой вопрос, чтобы включить больше вашего кода. - person ; 25.07.2012
comment
Это как-то связано с Calibre, программой, которую я использую. Я делаю рецепт для получения статей. Статья получает заголовок вроде «Демократия и ее враги» и так далее. Но нашел только первую статью. Даже если я использую findAll('a') не получится. Может ли это быть ошибкой программного обеспечения? - person user1550725; 25.07.2012
comment
Если ваш вопрос содержит XML, который вы хотите проанализировать, и если вы используете BeautifulSoupa, как в моем ответе, он должен работать. Калибр не имеет значения. - person ; 25.07.2012
comment
Спасибо. Я сделал другие рецепты, используя тот же метод, и не нашел проблемы. Может быть, мне следует обратиться за помощью к тем, кто поддерживает программное обеспечение. - person user1550725; 25.07.2012