Selenium WebDriver中“continue未在循环内”错误的解决方法
问题解决:"continue未正确处于循环内"错误
错误原因
continue是专门用来跳过当前循环剩余语句、进入下一次循环的关键字,只能在for或while循环内部使用。你这段scrape函数里没有任何循环结构,两处continue都不符合语法要求,所以触发了报错。
修复方案
根据你的代码逻辑,这里的continue应该是想在遇到异常/操作失败时提前终止当前函数执行,或者实现失败重试的逻辑,以下是两种可行的修复方式:
方案1:提前终止函数(替换为return)
如果遇到URL加载失败、评论按钮点击失败时,直接结束函数并返回对应结果:
def scrape(self, url): try: self.driver.get(url) except Exception as e: self.driver.quit() # 加载失败,返回空值或自定义失败标记 return None time.sleep(10) self.click_open_close_time() self.get_location_data() self.get_location_open_close_time() self.get_popular_times() if not self.click_all_reviews_button(): self.driver.quit() # 记得关闭浏览器驱动 return None time.sleep(5) self.scroll_the_page() self.expand_all_reviews() self.get_reviews_data() self.driver.quit() return self.location_data
方案2:添加循环实现重试逻辑
如果想在URL加载失败时自动重试几次,可以把核心逻辑放到while循环里:
def scrape(self, url, max_retries=3): retries = 0 while retries < max_retries: try: self.driver.get(url) break # 加载成功,跳出重试循环 except Exception as e: retries += 1 if retries >= max_retries: self.driver.quit() return None # 重试前等待3秒,避免频繁请求触发反爬 time.sleep(3) time.sleep(10) self.click_open_close_time() self.get_location_data() self.get_location_open_close_time() self.get_popular_times() if not self.click_all_reviews_button(): self.driver.quit() return None time.sleep(5) self.scroll_the_page() self.expand_all_reviews() self.get_reviews_data() self.driver.quit() return self.location_data
额外提醒
- 爬取谷歌地图数据前要严格遵守谷歌的服务条款,避免触发反爬机制导致IP或账号被限制。
- 固定时长的
time.sleep()效率较低,建议改用WebDriverWait显式等待,等待页面元素加载完成后再执行操作。
内容的提问来源于stack exchange,提问作者Marcus Wayne
相关产品推荐
相关产品推荐

