0
votes

Comment extraire des données de l'expression Regex dans ce cas?

Je tente de racler des noms de rangs de Cette URL

Actuellement, je me débats avec mon expression de regex, car cela fonctionne bien pour faire correspondre le contenu (REGEX101), mais je ne sais pas comment je prends une expression de regex correspondante et Utilisez-le pour extraire les valeurs beaucoup.

Quand je gratte, je peux altérer la rue à trouver pour assortir avec elle (et recevez un résultat), mais je ne sais pas comment je vais de là et que je l'attribue à plusieurs reprises des valeurs retournées à la liste xxx

[AZ] + \ s + [a-za-z] dans l'expression de regex doit être renvoyé sur les coureurs de liste, de sorte que je peux alors Imprimez chaque nom du cavalier.


4 commentaires

Pourquoi vous avez besoin de regex si vous pouvez gratter les noms du cavalier directement en fonction de la classe Tag?


Pouvez-vous inclure une version de travail de votre code? Vous avez une SyntaxError et un TypeError.


C'est parce que cela ne donne pas encore à une production, c'est ce que j'ai besoin d'aide, je n'ai certainement pas une erreur de syntaxe. Où est l'erreur de type (NVM le trouva-t-elle, je pense que c'était le 3ème paramètre sur Windowall, j'ai oublié de la coller sur le débordement de la pile)? Si je pouvais simplement utiliser la classe de balises, que dois-je modifier? Je ne connais que regex comme c'est ce que j'ai été chargé d'utiliser ici.


La page est générée dynamiquement. Vous ne pouvez pas le télécharger avec Urllib. Pensez à utiliser sélénium ou un autre navigateur sans tête.


3 Réponses :


0
votes

comme @dyz mentionné dans les commentaires La page Web est générée dynamiquement lorsque vous essayez de le télécharger avec URLIB, vous obtiendrez une page Web comme celle-ci: Nonsensewebpage

Mais si vous visitez la même page Web via navigateur, vous obtiendrez tous les coureurs et les rangs affichés, car les navigateurs exécutent des scripts Java que les téléchargeurs comme Urllib ou les demandes ne font pas

 la page Web via navigateur

Vous devez rechercher une autre méthode si vous avez besoin d'informations à partir de ce site ou que vous pouvez essayer magnifiquesoups si vous souhaitez simplement apprendre la raclée Web


0 commentaires

0
votes

Il est clair que les éléments que vous souhaitez capturer sont générés de manière dynamique. Ainsi, vous avez besoin sélénium . De votre description, vous voulez avoir le nom des coureurs. Tout d'abord, vous devez télécharger le ChromeRiver qui correspond à la version de votre chrome. Ensuite, essayez ce code: xxx

sortie: xxx


0 commentaires

0
votes

Vous pouvez imiter la demande postale de la page, ce qui est plus rapide que d'utiliser un navigateur

import requests

headers = {'User-Agent' : 'Mozilla/5.0',
           'Referer' : 'https://dataride.uci.ch/Results/iframe/RankingDetails/119?disciplineId=8&groupId=48&momentId=39994&disciplineSeasonId=139&rankingTypeId=1&categoryId=22&raceTypeId=71'}
data = {

'rankingId' : 119,
'disciplineId' : 8,
'currentRankingTypeId' : 1,
'rankingTypeId' : 1,
'take' : 40,
'skip' : 0,
'page' : 1,
'pageSize' : 40,
'filter[filters][0][field]' : 'RaceTypeId',
'filter[filters][0][value]' : 71,
'filter[filters][1][field]' : 'CategoryId',
'filter[filters][1][value]' : 22,
'filter[filters][2][field]' : 'SeasonId',
'filter[filters][2][value]' : 139,
'filter[filters][4][value]' : 0 
}
r = requests.post('https://dataride.uci.ch/Results/iframe/ObjectRankings/', headers = headers, data = data).json()   
riders = [item['DisplayName'] for item in r['data']]
print(riders)


0 commentaires