刮表使用硒和PhantomJS
问题描述:
我想下面的表格刮:刮表使用硒和PhantomJS
我的代码,当我使用Chrome Web驱动程序的工作,但使用PhantomJS驱动程序时的输出似乎并不为了获得数字,它只获取文本。
我的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)
答
通过添加,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']]
伟大的工作......还有,谢谢 –