Selenium(Python)中的Web抓取会抛出Element Not Found

时间:2017-07-20 14:22:22

标签: python selenium xpath

我正试图从官方网站上抓取中国的经济数据,但我在最后一行得到了一个未找到元素的例外情况。我已经搜索了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()

1 个答案:

答案 0 :(得分:0)

所以......隐含的等待不是你的问题。通过网站代码查看我发现没有“treeZhiBiao_14”,所以我不确定你点击这里是什么。也许尝试使用这样的东西,这样你就知道你点击了什么。

browser.find_element_by_xpath("//*[contains(text(), '工业')]").click()

browser.find_element_by_xpath("//*[contains(text(), 'industry')]").click()