2016-07-22 9 views
1

Ich habe versucht, BS4 verwenden, um von this Webseite zu kratzen. Ich kann die gewünschten Daten nicht finden (Spielernamen in der Tabelle, zB "Claiborne, Morris").Schöne Suppe 4 Suche nach Text in der Tabelle

Wenn ich:

soup = BeautifulSoup(r.content, "html.parser") 
PlayerName = soup.find_all("table") 
print (PlayerName) 

Keiner der Namen der Spieler sind auch in der Ausgabe, es ist nur eine andere Tabelle zeigt.

Wenn ich:

soup = BeautifulSoup(r.content, 'html.parser') 
texts = soup.findAll(text=True) 
print(texts) 

ich sie sehen kann.

Gibt es Ratschläge, wie man sich eingruppiert und Spielernamen gibt?

+0

Die Daten werden dynamisch geladen –

Antwort

0

Die von Ihnen gesuchte Tabelle wird beim Rendern der Seite dynamisch mit JavaScript gefüllt. Wenn Sie die Seite mit z. requests, ruft nur die ursprüngliche, nicht geänderte Seite ab. Dies bedeutet, dass einige Elemente, die Sie in Ihrem Browser sehen, fehlen.

Die Tatsache, dass Sie die Spielernamen in Ihrem zweiten Codefragment finden können, liegt daran, dass sie in der JavaScript-Quelle der Seite als JSON enthalten sind. Sie können sie jedoch nicht mit BeautifulSoup abrufen, da das JavaScript nicht analysiert wird.

Die beste Option ist es, etwas wie Selenium zu verwenden, das einen Browser so gut wie möglich imitiert und JavaScript-Code ausführt, wodurch der Seiteninhalt wie in Ihrem eigenen Browser dargestellt wird.