0
votes

Trouver l'élément de xpath en python

J'aimerais extraire des cotes du site Web:

https://www.odddsportal.com/soccer/europe/chape-2015-2016/real-madrid-manchester-city-dhjzn1pn/#1x2 ; 2

Par exemple, les chances de la maison pour 1xBet sont de 1,5, et je copie l'expression XPath pour cette cote et insérez-la dans Find_Element_By_XPath . .

Voici mon petit code: xxx

Malheureusement, la réponse est une erreur:

hao @ hao-thinkpad-t420: ~ $ ./testodds.py Real Madrid - Manchester City Cotes de paris, Football - Champions League 2015/2016 Traceback (la plupart Appel récent dernier): fichier "./testodds.py", ligne 12, dans Element = pilote.find_element_by_xpath ("/ html / corps / div [1] / div / div [2] / div [6] / div [1] / div / div [1] / div [2] / div [1] / div [7] / div [1] / Table / Tody / TR [2] / TD [1] / Div / A [2] ") Déposer "/Home/hao/.local/lib/python3.6/site-packages/selenium/webdiver/remote/webdriver.py", Ligne 394, dans Find_Element_By_XPATH renvoyer self.find_element (by = by.xpath, valeur = xpath) Fichier "/Home/hao/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", Ligne 978, dans Find_Element "Valeur": valeur}) ["valeur"] fichier "/home/hao/.local/lib/python3.6/site-packages/selenium/webdiver/remote/webdiver.py", ligne 321, en exécution self.error_handler.check_response (réponse) fichier "/home/hao/.local/lib/python3.6/site-packages/selenium/webdiver/remote/errorhandler.py", Ligne 242, dans Check_Response Soulever exception_class (message, écran, stacktrace) selenium.common.Exception.noschelementException: Message: Impossible de Localiser l'élément: / html / corps / div [1] / div / div [2] / div [6] / div [1] / div / div [1] / div [2] / div [1] / div [7] / div [7] / div [1] / Table / TABORE / TR [2] / TD [1] / DIV / A [2]


0 commentaires

3 Réponses :


1
votes

Votre expression XPath n'est pas correcte.

Votre expression XPath est la suivante: "/ html / corps / div [1] / div / div [2] / div [6] / div [1] / div / div [1] / div [2] / div [1] / div [ 7] / div [1] / Table / Todbody / TR [2] / TD [1] / DIV / A [2] "

Vous voulez ceci: / html / corps / div [1] / div / div [2] / div [6] / div [1] / div / div [1] / div [2] / div [1] / div [8 ] / div [1] / Table / Tody / TR [1] / TD [2] / div

Voici le code de travail complet. J'ai raclé avec succès les chances avec elle. xxx


4 commentaires

Une autre question :


Lorsque j'utilise l'inspecteur pour copier le XPath sur l'étrange 1.5, cela me donne:


/ html / corps / div [1] / div / div [2] / div [6] / div [1] / div / div [1] / div [2] / div [1] / div [7] / DIV [1] / Table / Tody / TR [2] / TD [1] / Div / Le Miskate vient de DIV [7] Pourquoi?


@ahmedaao Je ne suis pas tout à fait sûr de l'élément qui est, mais ils jettent souvent des faux éléments pour dissuader des racleurs comme vous. Les entreprises ne sont généralement pas heureuses que les gens le font.



1
votes

Essayez cette expression XPath:

.//table[@class='table-main detail-odds sortable']/tbody/tr/td[2]/div


0 commentaires

0
votes

Essayez cette expression XPath.

// div [@ Id = "Table de données de données"] // TD // A [contient (texte (), "1xbet")] // ancêtre :: TR // TD [2]

Il est préférable d'écrire votre propre expression XPath plutôt que de copier à partir du navigateur lorsque le navigateur donne une expression XPath très étroitement construite en fonction de la position de l'élément par rapport à l'élément le plus proche avec ID ou à partir de votre racine. Si un changement survient à n'importe quel endroit, votre expression XPath ne fonctionnera pas.


0 commentaires