2017-05-02 1 views
0

Je suis en train de gratter le contenu de commentaires de https://www.tiaa.org/public/offer/products/life-insurance en utilisant le code ci-dessousvaleur div.find_element_by_xpath.text ne vient pas

from selenium import webdriver 
driver = webdriver.Chrome() 
driver.get(html_page) 
driver.find_element_by_xpath("""//*[@id="bv-hero-ALL-LIFE-INSURANCE"]/span[2]/span[2]""").click() 
driver.implicitly_wait(20) 
reviews_list = driver.find_elements_by_css_selector('bv-content-item bv-content-top-review bv-content-review') 
author = '' 
summary = '' 
product_family = '' 
gender = '' 
occupation = '' 
reason = '' 

driver.switch_to_frame(0) 
for div in driver.find_elements_by_xpath('//*[@id="BVRRContainer"]/div/div/div/div/ol'): 
    author = div.find_element_by_xpath('//*[@id="BVRRContainer"]/div/div/div/div/ol/li[1]/div[2]/div[1]/div/div[1]/div/div[1]/div/div/div/h3') 
    print(author.text) 
    summary = div.find_element_by_xpath('//*[@id="BVRRContainer"]/div/div/div/div/ol/li[1]/div[2]/div[1]/div/div[2]/div/div/div[1]/p') 
    print (summary.text) 
    product_family = div.find_element_by_xpath('//*[@id="BVRRContainer"]/div/div/div/div/ol/li[1]/div[2]/div[1]/div/div[2]/div/div/div[2]/div[3]/div/span/a') 
    print(product_family.text) 
    gender = div.find_element_by_xpath('//*[@id="BVRRContainer"]/div/div/div/div/ol/li[1]/div[1]/div/dl/dd[3]/ul/li[5]/span[2]') 
    print(gender.text) 
    occupation = div.find_element_by_xpath('//*[@id="BVRRContainer"]/div/div/div/div/ol/li[1]/div[1]/div/dl/dd[3]/ul/li[4]/span[2]') 
    print(occupation.text) 
    reason = div.find_element_by_xpath('//*[@id="BVRRContainer"]/div/div/div/div/ol/li[1]/div[1]/div/dl/dd[3]/ul/li[2]/span[2]') 
    print(reason.text) 

J'ai essayé .getText() also..but pas de chance .. .. tous les pointeurs s'il vous plaît .

+0

Pouvez-vous partager xml de la page contenant le contrôle, dont le texte que vous essayez d'obtenir. – Shailendra

+0

probablement parce qu'il n'y a pas d'élément comme "BVRRContainer" sur la page. – kushal

Répondre

2

la raison getText() & text ne fonctionne pas parce que l'élément que vous tentez d'accéder est caché (je suppose par CSS) et getText() va chercher seulement le innerText visible. Il y a 2 éléments sur le DOM (pour chaque utilisateur) qui contiennent des informations sur le nom de l'auteur. De ces 2, un est caché (auquel vous accédez) & on est visible (que vous devriez utiliser).

Le XPath pour les noms de l'auteur qui devrait travailler est:

//*[@id="BVRRContainer"]/div/div/div/div/ol/li[1]/div[1]/div/div/div/div/h3