0
votes

Parse Tables HTML en Python - Cliquez sur Link in Cell

J'essaie d'analyser une table HTML et de cliquer sur chaque lien hypertexte dans la troisième colonne (où il est indiqué href = "JavaScript: showpaycheck). Il y a une tonne de poteaux qui montrent comment analyser les tables, mais je peux" T Trouvez tout ce qui ressemble à cette table que j'utilise:

NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="form1"]/div[3]/div/div/table"}


3 commentaires

Pourriez-vous fournir l'URL, s'il vous plaît ??


Vérifiez si la table est à l'intérieur d'un élément de cadre / iframe


L'URL est derrière une connexion. Permettez-moi de gratter la page entière.


3 Réponses :


1
votes

Votre xPath peut être plus précis, vous suggérerait d'aller avec une approche incrémentielle, essayez d'abord avec: xxx

si ci-dessus renvoie true xxx < p> Si ci-dessus est vrai aussi; Ensuite, vous pouvez obtenir des lignes et des données par index sur XPath ci-dessus. En outre, vérifiez pour tous les cadres de la hiérarchie supérieure de l'extrait HTML qui a été connecté dans votre message.


2 commentaires

Merci Pooja. Je commence par votre suggestion et j'ai compris que la table n'était pas due où être trouvé. C'était dans un iframe. Voir ma réponse pour plus de détails.


Oui, les iframes sont la réponse lorsqu'un XPath simple ne fonctionne pas ... Glad pourrait aider.



-1
votes

Avez-vous essayé d'utiliser des expressions régulières?

Utiliser sélénium : xxx

update: si le Le contenu est à l'intérieur d'un iframe , en utilisant selenium + chrome pilote Vous pouvez le faire: xxx


5 commentaires

Activez la classe Options de WebDriver et la fenêtre du navigateur Web ne sera pas ouverte.


J'ai essayé Regex et ça ne le trouve pas. J'ai essayé l'impression (impression (ELEM.TEXT)) Tous les éléments, mais je n'ai aucun résultat.


@Stevegon maintenant je peux comprendre ce que ça se passe!. Pouvez-vous voir le HTML iframe tag? Suivez le SRC Atributte, c'est un lien. À l'intérieur de ce lien sera une autre page contenant un script ou JavaScript qui crée l'ensemble du code HTML, à l'intérieur de la balise IFrame. Le iframe générer un HTML à l'intérieur d'un HTML, usure non? En fait, j'ai trouvé des pages HTML avec cette structure. Encore une fois, suivez le lien SRC à l'intérieur de l'IFRMA et jetez un coup d'œil à ce nouveau code HTML, vous trouverez probablement une syntaxe JSON, utilisez REGEX à FecTH.


@Stevegon Pouvez-vous partager les additionneurs de lien SRC ou le code HTML à l'intérieur du lien SRC ? Parfois, il est difficile de récupérer des données dans un iframe.


@Stevegon En outre, si vous téléchargez tout le code source HTML de SELENIUM , vous ne trouverez pas la section iframe . C'est pourquoi vous ne pouvez récupérer aucune donnée à l'aide de REGEX ou des méthodes de recherche de sélénium.



0
votes

La table est dans un iframe. Vous devez le sélectionner. Après Ce , j'ai édité le code comme suit:

wait = WebDriverWait(driver, 10)
wait.until(eConds.frame_to_be_available_and_switch_to_it((wdBy.CSS_SELECTOR, "iframe[id='hr2oScreen']:nth-of-type(1)")))
for table in wait.until(eConds.presence_of_all_elements_located((wdBy.CSS_SELECTOR, "table tr")))[1:]:
    data = [item.text for item in table.find_elements_by_css_selector("th,td")]
    print(data)


0 commentaires