2017-05-15 4 views
0

Ich entwickle ein Python-Skript, um Daten von einer bestimmten Site zu scrappen. Ich benutze Beautiful Soap als Python-Modul. Die interessanten Daten in HTML-Seite sind in dieser Struktur:Python scrape spezifisches Tag ohne Klassennamen

<tbody aria-live="polite" aria-relevant="all"> 
    <tr style=""> 
    <td> 
     <a href="www.server.com/art/crag">Name<a> 
    </td> 
    <td class="nowrap"></td> 
    <td class="hidden-xs"></td> 
    </tr> 
</tbody> 

in Tag tbody gibt es mehr tr-Tag und ich möchte jedem nur erste Tag nehmen eine von Tag td

ich in dieser versucht haben, weg:

page = requests.get(url) 
soup = BeautifulSoup(page.content, 'html.parser') 
a = soup.find(id='tabella_falist') 
b = a.find("tbody") 
link = [p.attrs['href'] for p in b.select("a")] 

aber auf diese Weise das Skript nehmen alle href in alle td-Tag. Wie kann nur zuerst gehen?

Dank

+0

Welche Leistung erwarten? Ich bin mir nicht sicher über das, was Sie versuchen, zu extrahieren – Arount

Antwort

1

Wenn ich Sie versuchen, dies richtig verstanden:

from bs4 import BeautifulSoup 
import requests 

url = 'your_url' 
page = requests.get(url) 
soup = BeautifulSoup(page.content, 'html.parser') 

print(soup.a) 

soup.a wird die erste a Tag auf der Seite zurückzukehren.

+0

Ja, aber ich würde das erste ein Tag abrufen in td-Tag. das td-tag ist in tr-tag und es gibt mehr tr-tag in tbody tag – APPGIS

+0

@APPGIS Versuchen Sie diesen Code und sehen, ob es funktioniert. – Nurjan

+0

Auf diese Weise nehme ich das erste Tag a, aber ich möchte das erste Tag a einer Tr-Liste – APPGIS

0

die Arbeit tun Dies sollten Sie

html = '''<html><body><tbody aria-live="polite" aria-relevant="all"> 
    <tr style=""> 
    <td> 
     <a href="www.server.com/art/crag">GOOD ONE<a> 
     <a href="www.server.com/art/crag">NOT GOOD ONE<a> 
    </td> 
    <td class="nowrap"> 
     <a href="#">GOOD ONE</a> 
    </td> 
    <td class="hidden-xs"></td> 
    </tr> 
</tbody></body></html>''' 

from bs4 import BeautifulSoup 
soup = BeautifulSoup(html) 

for td in soup.select('td'): 
    a = td.find('a') 
    if a is not None: 
     print a.attrs['href']