Python-BeautifulSoup zu kratzen Tabellen aus einer Webseite

Ich versuche zum sammeln von Informationen von einer website, die eine Datenbank für die Schiffe.

Ich habe versucht, die Informationen mit BeautifulSoup. Aber im moment scheint es nicht zu funktionieren. Ich habe versucht, die Suche im web und versucht, verschiedene Lösungen, aber nicht geschafft, den code zu arbeiten.

Ich Frage mich, habe ich zu ändern
table = soup.find_all("table", { "class" : "table1" }) - - - - Linie, da es 5 Tische mit class='table1', aber mein code findet nur 1.

Muss ich eine Schleife erstellen, die für die Tabellen? Als ich dies versuchte, ich konnte es nicht funktioniert. Auch die nächste Zeile table_body = table.find('tbody') gibt es einen Fehler:

AttributeError: 'ResultSet' object has no attribute 'find'

Sollte dies der Konflikt zwischen BeautifulSoup source-code, das ResultSet Unterklassen Liste und meinem code. Muss ich für die Iteration über die Liste?

from urllib import urlopen

shipUrl = 'http://www.veristar.com/portal/veristarinfo/generalinfo/registers/seaGoingShips?portal:componentId=p_efff31ac-af4c-4e89-83bc-55e6d477d131&interactionstate=JBPNS_rO0ABXdRAAZudW1iZXIAAAABAAYwODkxME0AFGphdmF4LnBvcnRsZXQuYWN0aW9uAAAAAQAYc2hpcFNlYXJjaFJlc3VsdHNTZXRTaGlwAAdfX0VPRl9f&portal:type=action&portal:isSecure=false'
shipPage = urlopen(shipUrl)

from bs4 import BeautifulSoup
soup = BeautifulSoup(shipPage)
table = soup.find_all("table", { "class" : "table1" })
print table
table_body = table.find('tbody')
rows = table_body.find_all('tr')
for tr in rows:
    cols = tr.find_all('td')
    for td in cols:
        print td
    print
  • Also was ist zu erwarten, dass die Ausgabe?
  • Ich brauche die Daten aus den Spalten in den Tabellen. wie Besitzer: TALLINK GRUPP AS; Flagge: ESTLAND; Und schließlich, um es zu speichern alle Daten als Tabelle in.csv-oder .txt
  • Eine kurze Antwort: soup.find_all() Gegenzug eine Liste, die nicht haben .find() Methode. Sollten Sie eine for-Schleife verwenden.
InformationsquelleAutor Gert Lõhmus | 2015-12-13
Schreibe einen Kommentar