Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.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
如何循环搜索结果的所有页面,为每个搜索结果选择href,使用python和selenium刮取数据_Python_Selenium_Web Scraping - Fatal编程技术网

如何循环搜索结果的所有页面,为每个搜索结果选择href,使用python和selenium刮取数据

如何循环搜索结果的所有页面,为每个搜索结果选择href,使用python和selenium刮取数据,python,selenium,web-scraping,Python,Selenium,Web Scraping,我正在抓取一个网站,在那里我需要从下拉列表中选择一个值。然后我需要点击搜索按钮。然后用多页搜索结果填充一个表。对于每个我想点击的结果,它会重定向到另一个页面,从中提取数据。然后返回并对其他搜索结果执行相同的操作 select = Select(browser.find_element_by_id("dropdown id here")) options = select.options for index in range(0,len(options)): selec

我正在抓取一个网站,在那里我需要从下拉列表中选择一个值。然后我需要点击搜索按钮。然后用多页搜索结果填充一个表。对于每个我想点击的结果,它会重定向到另一个页面,从中提取数据。然后返回并对其他搜索结果执行相同的操作

select = Select(browser.find_element_by_id("dropdown id here"))
options = select.options
for index in range(0,len(options)):
    select.select_by_index(index)
    browser.find_element_by_id("checkbox").click()
    time.sleep(5)
    browser.find_element_by_id("click on search").click()
    elems = browser.find_elements_by_xpath("need to enter all href for search results")
    time.sleep(5)
    for elem in elems:
        #Need to enter each search result's href scrape within data and get back to search results again##
        elem.get_attribute("href")
        elem.click()
        
        browser.find_element_by_id("for going back to search page again").click()


 
我在尝试迭代时遇到这个错误

StaleElementReferenceException:消息:stale元素引用:元素未附加到页面文档
(会话信息:chrome=87.0.4280.88)

如果要打开新窗口,可能需要在新打开的窗口/选项卡和原始窗口/选项卡之间切换焦点

切换到新打开的窗口

windows=browser.window\u句柄
浏览器.切换到.窗口(windows[-1])
在新页面上找到所需内容后关闭新打开的窗口,然后切换回上一个窗口

browser.close()
windows=browser.window\u句柄
浏览器.切换到.窗口(windows[-1])

当元素因过时而无法找到时,会出现此问题

尝试将find elemenet逻辑放入for循环中,这将解决您的问题

    elems = browser.find_elements_by_xpath((xpath)[i])
    length = elems.size();
用数字运行您的逻辑

for (int i=0;i<length; i++)
    #Need to enter each search result's href scrape within data and get back to search results again##

    elems = browser.find_elements_by_xpath("need to enter all href for search results"[i])

    elem.get_attribute("href")
    elem.click()
    time.sleep(1)
   

for(int i=0;i当我点击搜索结果时,它不会打开一个新窗口。它会在同一页上重定向。无法将屏幕快照的图片粘贴到imgur上,并在此处共享链接。当我为元素声明“i”时,就像你一样,它无法找到元素do like((xpath)[i])因此,您的xpath每次都是动态的,并且如果您可以接受这个答案,如果它对您有效,您是否检查了中的错误代码含义?