无法通过 Python 2.7 使用 selenium 单击
Cannot click using selenium with Python 2.7
我是网络爬虫的新手,非常感谢您的帮助。我正在尝试 select 从政府数据库下载的数据范围。 URL 显示在代码块中。理想情况下,我想为周期单击 "Select all",为指标单击 "GDP (Million N.T.$,at Current Prices)",为类型单击 "Data"。
问题:我只能点击"Select all"。
问题一:代码有什么问题?
问题 2:我也尝试过使用 xpath 但它没有用。这里在一个网页中存在多个//option[@value='1'。我不知道是不是这个原因。如果是,那么xpath应该怎么写?
问题 3:如果我想为所有 3 个变量单击 "Select all"。我该怎么做?
感谢您的耐心等待!
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()
您可以按如下方式制作:
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()
或使用xpath
:
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()
我是网络爬虫的新手,非常感谢您的帮助。我正在尝试 select 从政府数据库下载的数据范围。 URL 显示在代码块中。理想情况下,我想为周期单击 "Select all",为指标单击 "GDP (Million N.T.$,at Current Prices)",为类型单击 "Data"。
问题:我只能点击"Select all"。
问题一:代码有什么问题?
问题 2:我也尝试过使用 xpath 但它没有用。这里在一个网页中存在多个//option[@value='1'。我不知道是不是这个原因。如果是,那么xpath应该怎么写?
问题 3:如果我想为所有 3 个变量单击 "Select all"。我该怎么做?
感谢您的耐心等待!
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()
您可以按如下方式制作:
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()
或使用xpath
:
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()