Подтвердить что ты не робот

Разбор данных с использованием BeautifulSoup в Python

Я пытаюсь использовать BeautifulSoup для анализа через дерево DOM и извлечения имен авторов. Ниже приведен фрагмент HTML, чтобы показать структуру кода, который я собираюсь очистить.

<html>
<body>
<div class="list-authors">
<span class="descriptor">Authors:</span> 
<a href="/find/astro-ph/1/au:+Lin_D/0/1/0/all/0/1">Dacheng Lin</a>, 
<a href="/find/astro-ph/1/au:+Remillard_R/0/1/0/all/0/1">Ronald A. Remillard</a>, 
<a href="/find/astro-ph/1/au:+Homan_J/0/1/0/all/0/1">Jeroen Homan</a> 
</div>
<div class="list-authors">
<span class="descriptor">Authors:</span> 
<a href="/find/astro-ph/1/au:+Kosovichev_A/0/1/0/all/0/1">A.G. Kosovichev</a>
</div>

<!--There are many other div tags with this structure-->
</body>
</html>

Моя путаница в том, что когда я делаю soup.find, он обнаруживает первое появление тега div, который я ищу. После этого я ищу все теги ссылок "a". На этом этапе, как мне извлечь имена авторов из каждого тега ссылки и распечатать их? Есть ли способ сделать это с помощью BeautifulSoup или мне нужно использовать Regex? Как продолжить итерацию по всем другим тегам div и извлечь имена авторов?

import re
import urllib2,sys
from BeautifulSoup import BeautifulSoup, NavigableString
html = urllib2.urlopen(address).read()
    soup = BeautifulSoup(html)

    try:

        authordiv = soup.find('div', attrs={'class': 'list-authors'})
        links=tds.findAll('a')


        for link in links:
            print ''.join(link[0].contents)

        #Iterate through entire page and print authors


    except IOError: 
        print 'IO error'
4b9b3361

Ответ 1

просто используйте findAll для ссылки divs, которую вы делаете для ссылок

для authordiv в файле soup.findAll('div', attrs = {'class': 'list-authors'}):

Ответ 2

Так как link уже взято из итерабельного, вам не нужно субиндексировать link - вы можете просто сделать link.contents[0].

print link.contents[0] с вашим новым примером с двумя отдельными <div class="list-authors"> выводами:

Dacheng Lin
Ronald A. Remillard
Jeroen Homan
A.G. Kosovichev

Поэтому я не уверен, что понимаю комментарий о поиске других div. Если они являются разными классами, вам нужно либо сделать отдельные soup.find, и soup.findAll, либо просто изменить свой первый soup.find.