簡體   English   中英

使用Selenium和PhantomJS抓取表格

[英]Scrape Table using selenium and PhantomJS

我正在嘗試刮下表:

在此處輸入圖片說明

當我使用chrome網絡驅動程序時,我的代碼正常工作,但是當使用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庫使用“加載時”窗口的大小。 沒有window size參數可能導致例程無法正確加載頁面上的所有元素。

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']]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM