2016-07-28 17 views
0

Ich möchte systematisch die Datenschutzverletzung Daten gefunden here, die direkt in den HTML der Seite eingebettet ist. Ich habe verschiedene Links auf StackOverflow über missing HTML und not being able to scrape a table using BS4 gefunden. Beide Threads scheinen dem Problem, das ich habe, sehr ähnlich zu sein, aber ich habe eine schwierige Zeit, die Unterschiede in Einklang zu bringen.BeautifulSoup4 schlägt fehl, mehrere Tabellen zu analysieren

Hier ist mein Problem: Wenn ich den HTML-Code mit Requests oder Urllib (Python 3.6) ziehen, erscheint die zweite Tabelle nicht in der Suppe. Der zweite obige Link besagt, dass dies auftreten kann, wenn die Tabelle/Daten nach dem Laden der Seite mit JavaScript hinzugefügt werden. Wenn ich jedoch die Seitenquelle untersuche, sind die Daten alle da, also scheint das nicht das Problem zu sein. Ein Ausschnitt meines Codes ist unten.

url = 'https://www.privacyrights.org/data-breach/new?title=&page=1' 
r = requests.get(url, verify=False) 
soupy = BeautifulSoup(r.content, 'html5lib') 
print(len(soupy.find_all('table'))) 
# only finds 1 table, there should be 2 

Dieses Code-Schnipsel nicht in ihm die Tabelle mit den aktuellen Daten zu finden. Ich habe lmxl, html5lib und html.parse Parser versucht. Ich habe versucht, Urlib und fordert Pakete, um die Seite herunterzuziehen.

Warum kann Anfragen + BS4 die Tabelle nicht finden, die ich suche?

+0

Ich sehe nur eine Tabelle. Welchen zweiten Tisch erwartest du? Sind Sie sicher, dass die Seite keinen JavaScript-Code enthält, der das DOM im Browser ändert, um Tabellen hinzuzufügen? –

+0

Es ist möglich, aber ich bin nicht so vertraut mit Javascript. Wenn ich die Seitenquelle anschaue, sind die Daten in der Tabelle mit class = "data-bruchtabelle". – Alexander

+0

Diese Tabelle gehört nicht zur Quelle, die von der Anfrage bedient wird. Dies ist kein BeautifulSoup-Problem. Sie müssen Selen verwenden, um einen Browser zu steuern und den JavaScript-Code auszuführen, der diese Tabelle lädt, oder den Seitencode zurückentwickeln und herausfinden, wie diese Tabelle aufgebaut ist. –

Antwort

0

Betrachtet man den HTML-Code, der von der URL geliefert wird, so scheint es, dass nur eine Tabelle darin ist, und genau deshalb kann Beautiful Soup nicht zwei finden!