Ich versuche, eine Tabelle in einem Wikipedia-Artikel zu kratzen und der Typ jedes Tabellenelements scheint sowohl <class 'bs4.element.Tag'>
und <class 'bs4.element.NavigableString'>
.BeautifulSoup Tag ist Typ bs4.element.NavigableString und bs4.element.Tag
import requests
import bs4
import lxml
resp = requests.get('https://en.wikipedia.org/wiki/List_of_municipalities_in_Massachusetts')
soup = bs4.BeautifulSoup(resp.text, 'lxml')
munis = soup.find(id='mw-content-text')('table')[1]
for muni in munis:
print type(muni)
print '============'
erzeugt folgende ouput:
<class 'bs4.element.Tag'>
============
<class 'bs4.element.NavigableString'>
============
<class 'bs4.element.Tag'>
============
<class 'bs4.element.NavigableString'>
============
<class 'bs4.element.Tag'>
============
<class 'bs4.element.NavigableString'>
...
Wenn ich versuche, muni.contents
ich den AttributeError: 'NavigableString' object has no attribute 'contents'
Fehler erhalten abzurufen.
Was mache ich falsch? Wie bekomme ich das bs4.element.Tag
Objekt für jede muni
?
(mit Python 2.7).
Sie wissen wahrscheinlich, dass ** munis ** ist eine Darstellung einer Tabelle in der Wikipedia-Seite. Wenn Sie es ausdrucken, sehen Sie den HTML-Code der Tabelle. Wenn Sie die Tags der Kinder von ** munis **, dh deren Zeilen sehen wollen, können Sie den Code 'für Kind in munis.childGenerator(): child.name' verwenden - nur eine Reihe von trs in single Zitate. Ich bezweifle, dass du das willst. Sollten Sie fragen, wie Sie den Inhalt jeder Zeile der Tabelle, möglicherweise in Form einer Python-Liste, auskratzen können? –