Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未找到Selenium(Python)中的Web抓取抛出元素_Python_Selenium_Xpath - Fatal编程技术网

未找到Selenium(Python)中的Web抓取抛出元素

未找到Selenium(Python)中的Web抓取抛出元素,python,selenium,xpath,Python,Selenium,Xpath,我试图从一个官方网站上搜集中国的经济数据,但在最后一行我一直得到一个元素“未发现异常”。我已经搜索了stackoverflow,并尝试添加隐式的_wait,并将问题行从xpath切换到ID,但没有任何效果。有什么想法吗 from selenium import webdriver FAI = [] FAIinfra = [] FAIestate = [] path_to_chromedriver = '/Users/cargillsk/Downloads/chromedriver' bro

我试图从一个官方网站上搜集中国的经济数据,但在最后一行我一直得到一个元素“未发现异常”。我已经搜索了stackoverflow,并尝试添加隐式的_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()

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

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


尝试重新聚焦
浏览器。切换到.active\u元素
您搜索了堆栈流,唯一发现的是隐式等待并将xpath更改为id,显式等待如何,iframe?Gaurang,如果有时听起来很愚蠢,我很抱歉,但我正在努力自学Python,而且我只参加了几周的培训。Re:你的评论,我的理解是,如果隐式等待不起作用,显式等待也不会起作用,因为前者涵盖了整个程序。我在html中查找框架,但没有找到。雷德普,谢谢你的提示,但不幸的是,这对我不起作用。仍然无法理解这一点。如果这有帮助的话,每隔一段时间它(看起来是随机的)就会起作用。我不明白为什么它在大多数时候都不起作用。哇,它起作用了——非常感谢。“treeZhiBiao_14”肯定在我正在查看的代码中……但我不会为此担心,因为我已经关注这个问题整整一周了!再次感谢你的帮助,没问题!当然可以尝试使用不太直接的路径,有时网站可能会更改或移动元素的位置,这会完全搞乱您的代码。
browser.find_element_by_xpath("//*[contains(text(), 'industry')]").click()