2017-05-08 2 views
0

J'essaye d'extraire la table de coefficient pour le football de 'http://www.flashscore.com/'. Comme vous regardez le code source de la page, vous pouvez voir que la table est dans un div avec id = "fs". Mais BeautifulSoup n'en renvoie aucun lorsque je recherche ce div. J'ai écrit un script comme ci-dessous. Quel est le problème ici?Belle Soupe 4 HTML analyse

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' vient de la requête' post', vous ne pouvez pas l'extraire de la requête 'get'. –

+0

Vous dites donc qu'il est impossible d'extraire ces coefficients de ce site? –

+0

Quand ai-je dit que c'était impossible? –

Répondre

2

Vous devez utiliser selenium parce que les données (div avec classe fs) est chargé avec ajax.When request.get('http://www.flashscore.com/') est utilisé uniquement 'http://www.flashscore.com/' url est requested.No autre demande ajax sont appelés qui lui sont associés. Reportez-vous le code ci-dessous que l'utilisation du sélénium

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

ERREUR: selenium.common.exceptions.WebDriverException: Message: l'exécutable 'geckodriver' doit être dans PATH –

+0

@ElginCahangirov vous devez installer geckodriver Cochez cette case http://selenium-python.readthedocs.io/installation.html#drivers –

+0

Merci pour l'aide! Etes-vous sûr qu'il n'est pas possible de le faire avec le module de demandes? –

0

je ne pouvais pas trouver id de plongée avec 'fs' sur 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() donne d'abord id occurence de si vous voulez trouver tout ce que vous pouvez utiliser la fonction find_all()

+0

J'ai essayé ceci. La soupe trouve div avec id 'fsbody', mais ne peut pas trouver div avec id 'fs'. C'est le problème. Regardez l'intérieur de div avec id 'fsbody', 'fs' est là. –

+0

je ne pouvais pas trouver de div avec id ** fs ** –