avant votre requests.get()
, essayez d'ajouter un en-tête :
import requests
url = "https://www.ncaa.com/scoreboard/basketball-men/d1/"
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}
response = requests.get(url, headers = headers)
html = response.text
Mon autre suggestion serait d'utiliser :
url = 'https://data.ncaa.com/casablanca/scoreboard/basketball-men/d1/2019/01/26/scoreboard.json'
et utilisez le package json pour le lire. Tout est en direct et là pour vous dans un joli format JSON
Code
import json
import requests
url = 'https://data.ncaa.com/casablanca/scoreboard/basketball-men/d1/2019/01/26/scoreboard.json'
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}
response = requests.get(url, headers = headers)
jsonStr = response.text
jsonObj = json.loads(jsonStr)
J'ai vérifié et l'objet JSON renvoie les scores/données en direct. Et tout ce que vous avez à faire est de changer la date dans l'URL 2019/01/26
pour obtenir les données de fin des dates précédentes pour les jeux.
MODIFICATION - SUPPLÉMENTAIRE
Cela pourrait vous aider à extraire les données. Remarquez comment je l'ai changé à la date d'aujourd'hui pour obtenir les données actuelles. Il le place dans une belle base de données pour vous :
from pandas.io.json import json_normalize
import json
import requests
url = 'https://data.ncaa.com/casablanca/scoreboard/basketball-men/d1/2019/01/27/scoreboard.json'
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}
# Thanks to InfectedDrake wisdom, the following 3 lines that I previously had can be replaced by a single line. See below
#response = requests.get(url, headers = headers)
#jsonStr = response.text
#jsonObj = json.loads(jsonStr)
jsonObj = requests.get(url, headers = headers).json()
result = json_normalize(jsonObj['games'])
Essayez de modifier le user-agent dans l'en-tête de la requête pour qu'il soit identique à votre user-agent Google Chrome en ajoutant ceci à vos en-têtes :
headers = {
'User-Agent': 'Add your google chrome user-agent here'
}