2016-12-09 2 views
0

Ich versuche gerade, Daten von einer Website zu scrappen, aber mit dem darunter liegenden Code würde aus irgendeinem Grund ein leeres Array "[]" zurückgegeben. Ich kann die Gründe dafür nicht verstehen. Wenn ich das erzeugte HTML überprüfe, scheint es eine Menge von \ t \ r \ n zu geben. Ich bin mir nicht sicher, was das Problem mit meinem Code zu sein scheint.BeautifulSoup Leeres Array zurückgeben

url = "http://www.hkex.com.hk/eng/csm/price_movement_result.htm?location=priceMoveSearch&PageNo=1&SearchMethod=2&mkt=hk&LangCode=en&StockType=ALL&Ranking=ByMC&x=51&y=6" 
html = requests.get(url) 
soup = BeautifulSoup(html.text,'html.parser') 
rows = soup.find_all('tr') 
print rows 

Ich habe versucht, nicht „.text“ zu analysieren und auch ‚lxml‘ statt ‚html.parser‘, aber mit dem gleichen Ergebnis endete.

BEARBEITEN: Die Problemumgehung gefunden, Selen verwendet, um die Seite zu öffnen und die Quelle stattdessen zu greifen.

url = "http://www.hkex.com.hk/eng/csm/price_movement_result.htm?location=priceMoveSearch&PageNo=1&SearchMethod=2&mkt=hk&LangCode=en&StockType=ALL&Ranking=ByMC&x=51&y=6" 
driver = webdriver.Firefox() 
driver.get(url) 
f = driver.page_source 
soup = BeautifulSoup(f,'html.parser') 
rows = soup.find_all('tr') 

Antwort

0

Diese Seite benutzt JavaScript, um Daten vom Server zu holen, und Sie können Javascript finden, um Daten in chrome's dev_tools anzufordern, so dass Sie diesen Link anfordern können, um die benötigten Informationen zu erhalten.

http://www.hkex.com.hk/eng/csm/ws/Result.asmx/GetData?location=priceMoveSearch&SearchMethod=2&LangCode=en&StockCode=&StockName=&Ranking=ByMC&StockType=ALL&mkt=hk&PageNo=1&ATypeSHEx=&AType=&FDD=&FMM=&FYYYY=&TDD=&TMM=&TYYYY= 

gibt es keine Notwendigkeit Selen

0

Es gibt keine echten HTML-Zeilen im Dokument. Die Zeilen werden dynamisch mit JavaScript generiert. BeautifulSoup kann JavaScript nicht ausführen.

+0

zu verwenden, wenn ich Selen-Treiber verwenden wäre, würde ich die Website kratzen kann? Wenn nicht, was wäre die bestmögliche Lösung. EDIT: gerade versucht es funktioniert es dank – kimpster

+0

Nach dieser Diskussion können Sie ja. Habe es nie selbst ausprobiert. http://stackoverflow.com/questions/14529849/python-scraping-javascript-using-selenium-and-beautiful-soup – DyZ

0

Wenn Sie den Inhalt der Variablen html.text anzeigen, werden Sie feststellen, dass der Inhalt dynamisch generiert wird und keine gültigen Elemente enthält.