2016-03-03 93 views
-1

我是新來的網絡爬行,真的很感謝你的幫助。我試圖從政府數據庫中選擇要下載的數據範圍。該URL顯示在代碼塊中。理想情況下,我想單擊期間的「全選」,「指標的GDP(百萬N.T。$,當前價格)」和Type的「數據」。無法點擊使用硒與Python 2.7

問題:我只能點擊「全選」。

問題1:代碼有什麼問題?

問題2:我也試過用xpath但它沒有工作。這裏存在多個//選項[@ value ='1'在網頁中。我不知道這是否是原因。如果是,那麼我應該如何編寫xpath?

問題3:如果我想爲所有3個變量單擊「全選」。我怎麼能這樣做?

謝謝你的耐心等待!使用xpath

driver.find_element_by_partial_link_text('Select all').click() 
driver.find_element_by_css_selector('select[name="values2"]>option[value="4"]').click() 
driver.find_element_by_css_selector('select[name="values3"]>option[value="1"]').click() 
driver.find_element_by_xpath('//input[@type="SUBMIT"]').click() 

或:

import scrapy 
from selenium import webdriver 
import time 
from scrapy.selector import HtmlXPathSelector 

class gdp_spider2(scrapy.Spider): 
    name = 'gdp_spider2' 
    allowed_domains = ['statdb.dgbas.gov.tw/'] 
    start_urls = ['http://statdb.dgbas.gov.tw/pxweb/Dialog/varval.asp?ma=NA8101A1Q&ti=Principal%20Figures%282008SNA%29-Quarterly&path=../PXfileE/NationalIncome/&lang=1&strList=L'] 

    def __init__(self): 

    self.driver = webdriver.Firefox() 

    def parse(self, response): 
     driver = self.driver 
     driver.get(response.url) 
     driver.find_element_by_partial_link_text('Select all').click() 
     time.sleep(1) 
     driver.find_element_by_partial_link_text('GDP (Million N.T.$,at Current Prices)').click() 
     time.sleep(1) 
     driver.find_element_by_partial_link_text('Data').click() 
     time.sleep(1) 
     driver.find_element_by_xpath("//input[@type='SUBMIT']").click() 

回答

1

可以按如下方式使其

driver.find_element_by_partial_link_text('Select all').click() 
driver.find_element_by_xpath('//option[contains(text(),"GDP (Million N.T.$,at Current Prices)")]').click() 
driver.find_element_by_xpath('//option[contains(text(),"Data")]').click() 
driver.find_element_by_xpath('//input[@type="SUBMIT"]').click() 
+0

謝謝!有效! –