Selenium爬虫 -- 使用Selenium爬取数据时,网页切换之后原先获取的元素变量失效的问题

在使用Selenium爬取数据时,遇到点击进入详情页后,返回主页元素失效的问题。文章探讨了两种解决方案:1) 创建额外的浏览器驱动用于详情页爬取;2) 提前获取所有帖子链接后再逐一处理。同时,提醒快速操作可能带来封号风险。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如题,在使用Selenium爬取**的数据时,有的帖子是有图片的,而主页是没法直接获取图片的,只能点击进入详情页面,并且还得进其他网站才能获取图片的绝对地址来下载。

而采集完之后,使用back方法回到主页后,也就是经过网页切换之后,原先在主页获取的元素变量articles就失效了,不能再继续从中提取article来处理下一个帖子,而是会直接结束循环。

articles = self.browser.find_elements_by_xpath('//article[@class="_55wo _5rgr _5gh8 async_like _1tl-"]')
for article in articles: # 切换网页之后这里就不会再进行
    print('循环一次')

如果返回之后重新获取,可能就没有顺序,而且也不符合编程简洁的规范。

分析代码,感觉应该是因为同一个浏览器驱动,get了不同页面并进行了find之后,之前的find可能就会失效。

于是进行解决方法的设想。

1、创建另一个临时浏览器:

在循环中如果需要点击进入详情页面获取数据时,比如获取图片、获取转评赞的ID和内容等等,直接再创建一个浏览器驱动,在另一个浏览器中进行爬取,原先的主浏览器就停留在用户主页,专用来循环爬取帖子。

这种方法不好,一直不停创建总会有bug。

所以,直接在程序的一开始,就创建两个浏览器驱动,一号用来爬取主页,二号用来爬取详情页,二号用来进入详情页的链接就从一

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值