Je dois gratter un site Web, ce qui nécessite un jeton de connexion. La valeur est remplacée ultérieurement via JS. document.getElementById ('token'). value = '...

2
Asad 14 mars 2021 à 16:46

2 réponses

Meilleure réponse

Le code suivant obtient avec succès le jeton de connexion de votre site Web:

import requests
session_requests = requests.session()
html = session_requests.get("http://lms.uaf.edu.pk/login/index.php")
html = html.text
a = html.split("document.getElementById(\'token\').value=\'")[1]
b = a.split("'")[0]
1
knosmos 14 mars 2021 à 15:20

La raison pour laquelle votre code ne fonctionne pas est que le navigateur ignore tout code html après </html> (qui ferme essentiellement le document), et BeautifulSoup a évidemment été conçu de la même manière, donc il analyse uniquement tout ce qui se trouve à l'intérieur du {{X1 }}, et comme la balise <script> avec le JavaScript qui remplace le jeton de connexion vient après la balise de fermeture </html>, elle ne sera pas analysée par BeautifulSoup et vous ne peut pas l'obtenir. Vous devriez mettre BeautifulSoup de côté à cette fin et utiliser simplement Python, comme dans @knosmos answer.

0
Programmer 14 mars 2021 à 15:16