2017-07-13 6 views
0

Ich versuche, die Daten von der Tabelle ID = AWS von der folgenden NOAA-Site, https://www.weather.gov/afc/alaskaObs, zu kratzen, aber wenn ich versuche, die Tabelle mit ".find" zu finden, kommt mein Ergebnis als keine. Ich bin in der Lage, das Eltern-Div zurückzugeben, kann aber anscheinend nicht auf die Tabelle zugreifen. Unten ist mein Code.Kann Tabelle nicht finden mit Python BeautifulSoup

from bs4 import BeautifulSoup 
from urllib2 import urlopen 

# Get soup set up 
html = urlopen('https://www.weather.gov/afc/alaskaObs').read() 
soup = BeautifulSoup(html, 'lxml').find("div", {"id":"obDataDiv"}).find("table", {"id":"AWS"}) 


print soup 

Wenn ich versuche, nur das übergeordnete div "obDataDiv" zu finden, gibt es Folgendes zurück.

<div id="obDataDiv"> </div> 

Ich bin ziemlich neu in BeautifulSoup, ist das ein Fehler? Jede Hilfe wird geschätzt, danke!

Antwort

1

urlopen wird nur das DOM geben, die vom Server heruntergeladen wurden, nicht das, was es am Ende. Im Fall Ihrer Beispielwebsite wird die Tabelle nach dem Laden der Seite in Javascript generiert. Sie müssen also PhantomJS, Selenium usw. verwenden, damit der erforderliche clientseitige JS zuerst ausgeführt wird.

0

Es scheint die div Sie extrahieren enthält nur eine Tabelle. Also, warum so etwas wie dies nicht tun: Sein nach dem Ausführen anfängliche clientseitigen Skripte

soup = BeautifulSoup(html, 'lxml').find("div", {"id":"obDataDiv"}).find("table") 
Verwandte Themen