如题,在使用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。
所以,直接在程序的一开始,就创建两个浏览器驱动,一号用来爬取主页,二号用来爬取详情页,二号用来进入详情页的链接就从一