J'essaie donc de supprimer certaines informations d'un site Web, et lorsque j'essaie d'obtenir un élément de XPath, je reçois une erreur "Impossible de localiser l'élément" lorsque le chemin que je fournis est copié directement à partir de l'outil d'inspection. J'ai essayé quelques choses mais cela n'a pas fonctionné, alors je me suis dit que j'allais essayer un chemin plus facile (test) mais je ne travaille toujours pas. Est-il possible que le site Web ne montre pas tout le code HTML lors de l'inspection?
Voici le code, avec le site Web et le XPath que j'ai essayé. P>
def trader_table(): # Loading Chrome and getting to the website driver = webdriver.Chrome(executable_path='/usr/local/bin/chromedriver') driver.get(URL_TRADER) driver.implicitly_wait(10) text = driver.find_element_by_xpath(X_PATH).get_attribute('innerHTML') return text
4 Réponses :
J'ai ajouté une condition d'attente et utilisé une combinaison sélecteur CSS à la place, mais c'est la même chose que votre XPath, je pense
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC url = 'https://www.tipranks.com/analysts/joseph-foresi?benchmark=none&period=yearly' driver = webdriver.Chrome() driver.get(url) data = WebDriverWait(driver,10).until(EC.presence_of_element_located((By.CSS_SELECTOR, ".client-components-experts-infoTable-expertTable__table .client-components-experts-infoTable-expertTable__dataRow td:nth-child(3)"))).get_attribute('innerHTML') print(data)
Je suppose que vous recherchez Price code> Ici vous allez.
from selenium import webdriver
URL_TRADER = 'https://www.tipranks.com/analysts/joseph-foresi?benchmark=none&period=yearly'
X_PATH = "//div[@class='client-components-experts-infoTable-expertTable__isBuy']/div/span"
def trader_table():
driver = webdriver.Chrome(executable_path='/usr/local/bin/chromedriver')
driver.get(URL_TRADER)
driver.implicitly_wait(10)
list_ele= driver.find_elements_by_xpath(X_PATH)
price_list = []
for ele in list_ele:
print(ele.text)
price_list.append(ele.text)
return price_list
list=trader_table()
print(list)
Hey, merci beaucoup! Avez-vous une idée pourquoi le XPath de l'outil d'inspection donnait-il un «mauvais» chemin?
Et comment je devrais modifier le X_Path que vous me fournissez pour obtenir les autres valeurs. J'ai essayé d'utiliser du texte () au lieu de get_attribute ('innerhtml') mais cela ne fonctionne pas
@babas: Esquez-vous des valeurs de prix de toutes les lignes?
Utilisez pilote.find_element_by_xpath (x_path) .text code> il est imprimé le prix.
@Babas: Consultez mon code mis à jour pour toutes les lignes.I avez pris une liste pour stocker toute la valeur.
from selenium import webdriver import time driver = webdriver.Chrome("your webdriver location") driver.get("https://www.tipranks.com/analysts/joseph-foresi?benchmark=none&period=yearly") time.sleep(10) y = driver.find_element_by_id('app').get_attribute('innerHTML') print(y)
Vous avez fourni tous les détails nécessaires à la construction d'une réponse, mais vous n'avez pas mentionné explicitement quel élément vous essayiez d'obtenir em>. Cependant, le commenté xpath < / em> dans bloc de code: p>
Sortie de la console: P>
test code> nous donne un indice que vous étiez après la cible de prix
visibilité_of_all_elements_located () < / code> et vous pouvez utiliser la solution suivante: p>
Excellente réponse et désolé si je n'étais pas totalement clair sur ce qui était mon objectif.
@Babas heureux de pouvoir vous aider. S'il vous plaît accepter i> la réponse I> En cliquant sur la marque creuse à côté de ma réponse i> qui est juste en dessous de la flèche i> Sweightown i>, de sorte que la marque TIP est donc "I> Green i>.
Pouvez-vous spécifier l'élément que vous voulez xpath
Pouvez-vous fournir le code HTML de l'élément exact que vous essayez d'atteindre