2017-05-08 5 views
0

Ich versuche Koeffiziententabelle von ‚http://www.flashscore.com/‘ für Fußball zu extrahieren. Wenn Sie den Quellcode der Seite betrachten, können Sie sehen, dass sich die Tabelle in einem div mit id = "fs" befindet. Aber BeautifulSoup gibt keine zurück, wenn ich nach diesem div suche. Ich habe das Skript wie folgt geschrieben. Was ist hier falsch?Schön Suppe 4 HTML Parsing

Code 
import requests 
from bs4 import BeautifulSoup 

r = requests.get("http://www.flashscore.com/") 
soup = BeautifulSoup(r.content, "lxml") 
print(soup.find(id="fs")) 
+0

'table' kommt von' Post' Anfrage machen, können Sie es nicht von 'get' Anfrage extrahieren. –

+0

Sie sagen also, dass es unmöglich ist, diese Koeffizienten von dieser Website zu extrahieren? –

+0

Wann habe ich gesagt, das ist unmöglich? –

Antwort

2

Sie haben selenium zu verwenden, da die Daten (div mit Klasse fs) mit ajax.When geladen wird request.get('http://www.flashscore.com/') wird nur verwendet, 'http://www.flashscore.com/' url ist requested.No andere Ajax-Request sind aufgerufen, die mit ihm verbunden sind. unterhalb dieser Verwendung Selen den Code Siehe

from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 

driver = webdriver.Firefox() 
driver.get("http://www.flashscore.com/") 
try: 
    element = WebDriverWait(driver, 10).until(
     EC.presence_of_element_located((By.ID, "fs")) 
    ) 
finally: 
    driver.quit() 
+0

FEHLER: selenium.common.exceptions.WebDriverException: Nachricht: 'geckodriver' ausführbare Datei muss in PATH sein –

+0

@ElginCahangirov Sie müssen geckodriver installieren Überprüfen Sie http://selenium-python.readthedocs.io/installation.html#drivers –

+0

Danke für die Hilfe! Sind Sie sicher, dass dies nicht mit dem Request-Modul möglich ist? –

0

ich nicht tauchen ID mit 'fs' auf flashscore.com

import requests 
from bs4 import BeautifulSoup 
r = requests.get("http://www.flashscore.com/") 
soup = BeautifulSoup(r.text, "html.parser") 
print(soup.find('div',id='fsbody')) 

soup.find() gibt ersten Auftreten von id finden könnte, wenn Sie wollen, dass alle u finden Verwendung find_all() Funktion

+0

Ich habe das versucht. Suppe findet div mit id 'fbody', kann aber div nicht mit id 'fs' finden. Das ist das Problem. Schaut auf das Innere von div mit id 'fsbody', 'fs' ist da. –

+0

Ich konnte kein Div mit ID ** fs ** finden –