2014-04-07 6 views
0

저는 Chrome 확장 프로그램에 대한 데이터를 얻기 위해 Selenium with Python을 사용하고 있습니다. 특정 확장자의 사용자 수를 this page (으)로 변경하려고합니다. 나는 아래의 코드를 사용하고 있습니다 :셀렌이 웹 페이지에서 일부 데이터를 가져올 수 없습니다.

from selenium import webdriver 
from selenium.common.exceptions import ElementNotVisibleException, NoSuchElementException 
import time 

def create_browser(first_page=None): 
     print "Starting" 
     browser = webdriver.Chrome('/home/user/ChromeDriver/chromedriver') 
     if first_page: 
      browser.get(first_page); 
     print "Done." 
     return browser 


    def wait_find_element_by_xpath(driver, path): 
     counter = 0 
     while counter < 7: 
      try: 
       elem = driver.find_element_by_xpath(path) 
       break 
      except NoSuchElementException: 
       time.sleep(1) 
       counter += 1 
       elem = None 
     return elem 

    URL = 'https://chrome.google.com/webstore/detail/id-vault/jlljbiieciifehccmokcpnmlklpaimpa/details' 

    browser = create_browser() 
    browser.get(URL) 
    time.sleep(7) 
    #Get number of users 
    userStr = wait_find_element_by_xpath(browser, './/span[@class="webstore-f-g-He"]') 
    #print "\n\n\n No. of Users: " 
    #print userStr 
    #print userStr.text 
    #print "\n\n\n-----" 
    noOfUserStr = userStr.text.replace(" users", "") 
    noOfUsers = noOfUserStr.replace(",", "") 
    users = int(noOfUsers) 

내 문제는 내가 특정 페이지에서 사용자의 수를 얻을 수 없습니다 생각합니다. 대신 오류가 발생합니다. ValueError: invalid literal for int() with base 10: ''

다른 확장 기능과 잘 작동하기 때문에 이상하게 느껴집니다. 또한 소스 (오른쪽 클릭 -> 검사 요소)를 클릭해도 원본의 사용자 수 ("보낸 사람"필드 바로 뒤에 있음)가 표시되지만 여전히 값을 가져올 수 없습니다. 누구든지 문제를 해결할 수 있습니까?

+0

작업 코드를 입력하십시오. 수입이 누락되었습니다 – dorvak

+0

지금 수정했습니다. – TheRookierLearner

답변

1

문제는이 특정 확장 프로그램의 경우 "보낸 사람"URL의 길이 때문에 사용자 수가 표시되지 않는다는 것입니다. Selenium은 일반적으로 문서의 보이는 요소에서만 작동합니다.

나는 자바 스크립트 실행을 통해이 값을 얻는 것이 좋습니다 :

userStr = browser.execute_script("return document.getElementsByClassName('webstore-f-g-He')[0].textContent") 
관련 문제