Vous aurez besoin d'utiliser quelque chose comme BeautifulSoup pour analyser le HTML pour les liens dont vous avez besoin, de cette façon, il n'est pas nécessaire d'essayer de comprendre comment construire la requête.
import requests
from bs4 import BeautifulSoup
base_url = "http://results-2017.virginmoneylondonmarathon.com/2017/"
r = requests.get(base_url + "?pid=list")
soup = BeautifulSoup(r.content, "html.parser")
tbody = soup.find('tbody')
for tr in tbody.find_all('tr'):
for a in tr.find_all('a', href=True, class_=None):
print
print a.parent.get_text(strip=True)[1:]
r_runner = requests.get(base_url + a['href'])
soup_runner = BeautifulSoup(r_runner.content, "html.parser")
# Find the start of the splits
for h2 in soup_runner.find_all('h2'):
if "Splits" in h2:
splits_table = h2.find_next('table')
splits = []
for tr in splits_table.find_all('tr'):
splits.append([td.text for td in tr.find_all('td')])
for row in splits:
print ' {}'.format(', '.join(row))
break
Pour chaque lien, vous devez ensuite le suivre et analyser les séparations du code HTML renvoyé. Le script affiche à partir comme suit:
Boniface, Anna (GBR)
5K, 10:18:05, 00:17:55, 17:55, 03:35, 16.74, -
10K, 10:36:23, 00:36:13, 18:18, 03:40, 16.40, -
15K, 10:54:53, 00:54:44, 18:31, 03:43, 16.21, -
20K, 11:13:25, 01:13:15, 18:32, 03:43, 16.19, -
Half, 11:17:31, 01:17:21, 04:07, 03:45, 16.04, -
25K, 11:32:00, 01:31:50, 14:29, 03:43, 16.18, -
30K, 11:50:44, 01:50:34, 18:45, 03:45, 16.01, -
35K, 12:09:34, 02:09:24, 18:51, 03:47, 15.93, -
40K, 12:28:43, 02:28:33, 19:09, 03:50, 15.67, -
Finish, 12:37:17, 02:37:07, 08:35, 03:55, 15.37, 1
Griffiths, Josh (GBR)
5K, 10:15:52, 00:15:48, 15:48, 03:10, 18.99, -
10K, 10:31:42, 00:31:39, 15:51, 03:11, 18.94, -
....
Pour mieux comment comprendre comment cela fonctionne, vous devez d'abord jeter un oeil à la source HTML pour chacune des pages. L'idée étant de trouver quelque chose d'unique sur ce que vous cherchez dans la structure de la page pour vous permettre de l'extraire à l'aide d'un script.
Ensuite, je vous recommande de lire la page de documentation de BeautifulSoup. Cela suppose que vous comprenez la structure de base d'un document HTML. Cette bibliothèque vous fournit de nombreux outils pour vous aider à rechercher et extraire des éléments du HTML. Par exemple, trouver où sont les liens. Toutes les pages Web ne peuvent pas être analysées comme cela, car l'information est souvent créée en utilisant Javascript. Dans ces cas, vous devrez utiliser quelque chose comme selenium
mais dans ce cas, requests
et beautifulsoup
font bien le travail.
Les liens sont rompus. – Tico
@Tico Ils fonctionnent dans mon navigateur. – Belisario
Eh bien ... maintenant ils travaillent ..:/Bizarre ... Avant il y avait une page twitter cassée. Très étrange. Sry à propos de ça. – Tico