Ich versuche, die erste und dritte Spalte von this data table mit BeautifulSoup zu extrahieren. Aus dem Blick auf das HTML hat die erste Spalte einen <th>
Tag. Die andere Spalte von Interesse hat als <td>
Markierung. In jedem Fall war alles, was ich herausbekommen konnte, eine Liste der Spalte mit den Tags. Aber ich will nur den Text.Extrahieren ausgewählter Spalten aus einer Tabelle mit BeautifulSoup
table
ist bereits eine Liste, so kann ich findAll(text=True)
nicht verwenden. Ich bin nicht sicher, wie man die Auflistung der ersten Spalte in einer anderen Form erhält.
from BeautifulSoup import BeautifulSoup
from sys import argv
import re
filename = argv[1] #get HTML file as a string
html_doc = ''.join(open(filename,'r').readlines())
soup = BeautifulSoup(html_doc)
table = soup.findAll('table')[0].tbody.th.findAll('th') #The relevant table is the first one
print table
Ich glaube nicht, Sie werden in der Lage sein, die gesamte Spalte wie die HTML-Darstellung zu erhalten, ist zeilenbasierte (falsch sein könnte). Ich stelle mir vor, Sie könnten etwas approximieren, indem Sie die Zeilen durchlaufen und die entsprechende Spalte herausziehen und zu einer Datenstruktur Ihrer Wahl hinzufügen. – RocketDonkey
Ich begann mit dem Versuch, aber konnte immer noch nicht den Text herausziehen. Ich werde meine Antwort aktualisieren, um diesen Teil hinzuzufügen. Vielleicht ist das ein einfacher Weg. – mac389