python selenium通过一些链接进行循环

python selenium通过一些链接进行循环,python,selenium,loops,web-scraping,href,Python,Selenium,Loops,Web Scraping,Href,我有一个链接数组,我试图访问每个链接并打印其中的内容,然后返回主页并访问第二个链接,然后执行相同的操作,直到我完成数组中的所有链接 发生的情况是,第一个链接是唯一有效的链接,就像数组中的所有链接都消失了一样。我得到一个错误: 文件“e:\work\MY code\scraping\learn.py”,第25行,在打印链接中。单击() 从selenium导入webdriver 从selenium.webdriver.common导入密钥 #它使我们能够使用键盘钻孔键,如回车键、esc键等。。。。

我有一个链接数组,我试图访问每个链接并打印其中的内容,然后返回主页并访问第二个链接,然后执行相同的操作,直到我完成数组中的所有链接

发生的情况是,第一个链接是唯一有效的链接,就像数组中的所有链接都消失了一样。我得到一个错误:

文件“e:\work\MY code\scraping\learn.py”,第25行,在打印链接中。单击()

从selenium导入webdriver
从selenium.webdriver.common导入密钥
#它使我们能够使用键盘钻孔键,如回车键、esc键等。。。。
从selenium.webdriver.common.keys导入密钥
导入时间
#让我们可以等待事件发生,直到运行下一行代码
从selenium.webdriver.common.by导入
从selenium.webdriver.remote导入命令
从selenium.webdriver.support.ui导入WebDriverWait
从selenium.webdriver.support将预期的_条件导入为EC
#获取google chrome驱动程序路径
PATH=“E:\work\crom\chromedriver.exe”
#将pass传递给selenium webdriver方法
driver=webdriver.Chrome(路径)
#获取我们想要的站点的链接
驱动程序。获取(“https://app.dealroom.co/companies.startups/f/client_focus/anyof_business/company_status/not_closed/company_type/not_government%20nonprofit/employees/anyof_2-10_1 1-50_51-200/has_网站_url/anyof_yes/slug_locations/anyof_france?sort=-revenue”)
#等待页面加载
时间。睡眠(5)
#获取我想从中获取信息的链接
\u links=driver.find\u elements\u by\u class\u name(“表列表项”)
#函数,可以转到链接并打印一些内容,然后返回主页
链接=[]
\u links=driver.find\u elements\u by\u class\u name(“表列表项”)
对于_链接中的链接:
links.append(link.get_属性('href'))
对于链接中的链接:
驱动程序。获取(链接)
网站=驱动程序。通过类名称(“项目详细信息信息url”)查找元素
打印(网站文本)
司机:回来
时间。睡眠(3)

您的代码将抛出过时的元素引用错误,因为当您导航到下一页时,包含上一页任何元素的变量将变得不可用

所以您需要做的是将所有元素存储在数组中,然后像这样循环:

links=[]
the_links=driver.find_elements_by_class_name("table-list-item")
for link in the_links:
    links.append(link.get_attribute('href'))

for link in links:
    driver.get(link)
    print("do something on this link")

或者您可以在当前和之后的驱动程序中使用while循环。back()再次填充\u links变量。

Karim,是否所有页面上都存在类名称为“item-details-info\u url”的元素?另外,get()方法抛出了什么错误?

是否得到了一个过时的元素引用?不能定义元素,切换页面,然后再次使用该元素。看起来这就是你要做的,这会导致一个陈旧的元素错误。“是的,我知道了,你能告诉我另一种方法吗?好的,我尝试了这段代码,但是get()方法不起作用,你知道为什么吗?”?这就是我添加的内容:对于链接中的链接:driver.get(link)website=driver.find_element_by_class_name(“item-details-info_uurl”)print(website.text)driver.back()time.sleep(3)若get方法不起作用,那个么您可以使用JavaScript执行器来加载新的URL。例如,driver.execute_脚本(“window.location.href={}”.format(link))。这将带您到新的url。是的,该类在所有页面上都存在,get()方法根本不起作用,我在它存在的行中得到一个错误。我编辑了代码,现在您可以看到它了。您可以共享错误吗?