2016-11-09 108 views
0

我想下面的表格刮:刮表使用硒和PhantomJS

enter image description here

我的代码,当我使用Chrome Web驱动程序的工作,但使用PhantomJS驱动程序时的输出似乎并不为了获得数字,它只获取文本。

enter image description here

我的Python代码是这样的:

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

通过添加,browser.set_window_size(1124, 850),设置窗口大小为PhantomJS司机,我能够从页面检索表的数据。

发生这种情况,如果我正确回忆这一点,因为某些JavaScript库使用窗口的大小“上载”。没有窗口大小参数可能导致例程无法正确加载页面上的所有元素。

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

伟大的工作......还有,谢谢 –