我正试图从官方网站上抓取中国的经济数据,但我在最后一行得到了一个未找到元素的例外情况。我已经搜索了stackoverflow并尝试添加implicitly_wait并将问题行从xpath切换到ID,但没有任何工作。有什么想法吗?
from selenium import webdriver
FAI = []
FAIinfra = []
FAIestate = []
path_to_chromedriver = '/Users/cargillsk/Downloads/chromedriver'
browser = webdriver.Chrome(executable_path = path_to_chromedriver)
browser.implicitly_wait(30)
url = 'http://www.cqdata.gov.cn/easyquery.htm?cn=A0101'
browser.get(url)
browser.find_element_by_id('treeZhiBiao_4').click()
browser.find_element_by_xpath('//*
[@id="mySelect_sj"]/div[2]/div[1]').click()
browser.find_element_by_xpath('//*
[@id="mySelect_sj"]/div[2]/div[2]/div[3]/input').clear()
browser.find_element_by_xpath('//*
[@id="mySelect_sj"]/div[2]/div[2]/div[3]/input').send_keys('last100')
browser.find_element_by_xpath('//*
[@id="mySelect_sj"]/div[2]/div[2]/div[3]/div[1]').click()
FAIinitial = browser.find_element_by_xpath('//*[@id="main-container"]/div[2]/div[2]/div[2]/div/div[2]/table/thead/tr/th[2]/strong').text
for i in range(2,102):
i = str(i)
FAI.append(browser.find_element_by_xpath('//*[@id="table_main"]/tbody/tr[1]/td[%s]' % i).text)
FAIinfra.append(browser.find_element_by_xpath('//*[@id="table_main"]/tbody/tr[4]/td[%s]' % i).text)
FAIestate.append(browser.find_element_by_xpath('//*[@id="table_main"]/tbody/tr[55]/td[%s]' % i).text)
browser.find_element_by_id("treeZhiBiao_3").click()
browser.find_element_by_id("treeZhiBiao_14").click()
答案 0 :(得分:0)
所以......隐含的等待不是你的问题。通过网站代码查看我发现没有“treeZhiBiao_14”,所以我不确定你点击这里是什么。也许尝试使用这样的东西,这样你就知道你点击了什么。
browser.find_element_by_xpath("//*[contains(text(), '工业')]").click()
或
browser.find_element_by_xpath("//*[contains(text(), 'industry')]").click()