【问题标题】:Scrape Table using selenium and PhantomJS使用 selenium 和 PhantomJS 刮表
【发布时间】:2016-11-09 12:51:16
【问题描述】:

我正在尝试抓取下表:

当我使用 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)

【问题讨论】:

    标签: python selenium web-scraping phantomjs


    【解决方案1】:

    通过添加 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']]
    

    【讨论】:

      猜你喜欢
      • 2020-07-27
      • 2019-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-12
      • 2022-01-22
      • 2015-08-08
      相关资源
      最近更新 更多