J'aimerais extraire des cotes du site Web:
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 EM>. P>. Voici mon petit code: p> Malheureusement, la réponse est une erreur: p> 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] P>
blockQuote> p>
3 Réponses :
Votre expression XPath n'est pas correcte.
Votre expression XPath est la suivante:
Vous voulez ceci:
Voici le code de travail complet. J'ai raclé avec succès les chances avec elle. P> "/ 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] " CODE> P>
/ 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 code> p>
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.
Essayez cette expression XPath:
.//table[@class='table-main detail-odds sortable']/tbody/tr/td[2]/div
Essayez cette expression XPath. P>
// div [@ Id = "Table de données de données"] // TD // A [contient (texte (), "1xbet")] // ancêtre :: TR // TD [2] p> blockQuote>
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. P>