2016-07-30 26 views
0

Es gibt viele Websites, die einfach None zurückgeben, wenn ich einen Wert von der Website anfordern.BeautifulSoup Parsing gibt keine zurück

Beispiel:

import requests 
from bs4 import BeautifulSoup 

def spider(): 
    url = 'https://poloniex.com/exchange' 
    source_code = requests.get(url) 
    plain_text = source_code.text 
    soup = BeautifulSoup(plain_text, "html.parser") 
    High = soup.findAll("div", {"class": "high info"})[0].string 
    print High 
    # returns None  

spider() 

Wie löse ich dieses Problem? Bitte, alles was ich brauche ist ein Wert.

+0

Es gibt keinen Text, es wird dynamisch generiert Was würdest du sonst noch erwarten? –

+0

gibt es keinen Text, schauen Sie in den Quellcode

+0

so wie grabe ich den dynamisch generierten Text? – solidsnake

Antwort

0

Die Webseite hat JavaScript-Code, und deswegen gibt die Anfrage kein vollständiges Ergebnis zurück (der JS-Code ist in diesem Fall notwendig, um die Seite zu vervollständigen).

Ich verwende Selen, um diese Art von Problem zu lösen.

+0

Dies wurde als Antwort geschrieben, aber es versucht nicht, die Frage zu beantworten. Es sollte möglicherweise eine Bearbeitung, ein Kommentar, eine andere Frage oder gelöscht werden. – jforberg

0

Herunterladen chromedriver von diesem Link http://chromedriver.storage.googleapis.com/index.html?path=2.24/ und uzip es & Put chromedriver.exe in C: \ Python27 \ Scripts

versuchen diesen Code:

from selenium import webdriver 
import time 
from bs4 import BeautifulSoup 


driver = webdriver.Chrome() 
url= "https://poloniex.com/exchange" 
driver.maximize_window() 
driver.get(url) 

time.sleep(5) 
content = driver.page_source.encode('utf-8').strip() 
soup = BeautifulSoup(content,"html.parser") 
High = soup.findAll("div", {"class": "high info"})[0].string 
print High 
driver.quit() 

Es druckt:

0.02410000 

Hoffe, das hilft