2016-11-09 3 views
0

나는 다음과 같은 테이블을 긁어하려고 :긁어 표 사용 셀레늄 및 PhantomJS

enter image description here

내가 크롬 웹 드라이버를 사용하고 때 내 코드가 작동하지만 PhantomJS 드라이버를 사용하는 경우 출력은하지 않는 것 숫자를 얻으려면 텍스트 만 가져옵니다. browser.set_window_size(1124, 850), 추가함으로써

from selenium import webdriver 

path_to_chromedriver = '/Users/amr_f/Desktop/chromedriver' # change path as needed 
browser = webdriver.PhantomJS('/home/ubuntu/phantomjs-2.1.1-linux-x86_64/bin/phantomjs') 
url = 'http://www.cibeg.com/English/Pages/default.aspx' 
browser.get(url) 

browser.find_element_by_xpath('//*[@id="sliderHome"]/div[2]/div/ul/li[3]/a').click() 

data = [] 

for tr in browser.find_elements_by_xpath('//*[@id="divCurrTableContainer"]/table'): 
    tds = tr.find_elements_by_tag_name('td') 
    if tds: 

     data.append([td.text for td in tds]) 
print(data) 

답변

2

, 내가 페이지에서 테이블의 데이터를 검색 할 수 있었다 PhantomJS 드라이버 창 크기를 설정합니다 :

enter image description here

내 파이썬 코드는 이것이다.

특정 자바 스크립트 라이브러리가 "로드시"특정 크기의 자바 스크립트 라이브러리를 사용하기 때문에이를 올바르게 호출하면 이러한 일이 발생합니다. 창 크기 매개 변수가 없으면 루틴이 페이지의 모든 요소를 ​​올바르게로드하지 못할 수 있습니다.

from selenium import webdriver 


browser = webdriver.PhantomJS('/home/ubuntu/phantomjs-2.1.1-linux-x86_64/bin/phantomjs') 
browser.set_window_size(1124, 850) 
url = 'http://www.cibeg.com/English/Pages/default.aspx' 
browser.get(url)  
browser.find_element_by_xpath('//*[@id="sliderHome"]/div[2]/div/ul/li[3]/a').click()  
data = [] 

for tr in browser.find_elements_by_xpath('//*[@id="divCurrTableContainer"]/table'): 
    tds = tr.find_elements_by_tag_name('td') 
    if tds:  
     data.append([td.text for td in tds]) 

print(data) 

내가 검색 할 수 있었다 창 크기 추가 후 : 설명은

[['USD', '16.26', '16.75', 'EUR', '17.6696', '18.3563', 'GBP', '20.0895', '20.8621', 'CHF', '16.4571', '17.0536', 'SAR', '4.3297', '4.4663', 'KWD', '53.5202', '55.3353']] 
+0

이 ... 또한 우수함, 근무 덕분에 –

관련 문제