python - 在 python 中使用 try/except 的最佳方式
问题描述
我目前正在学习使用 python 从网站上抓取数据。我正在使用的网站类型很慢,并且在一天中多次停止工作,因此我不得不经常使用 try/catch。
例如:(在这种情况下,如果 chrome webdriver 带有 selenium,则为驱动程序)
time.sleep(2)
try:
dist_lst = [i.text for i in driver.find_element_by_xpath('//*[@id="cphBody_GridArrivalData"]').find_elements_by_tag_name('tr')]
except:
input("Check if data is loaded")
dist_lst = [i.text for i in driver.find_element_by_xpath('//*[@id="cphBody_GridArrivalData"]').find_elements_by_tag_name('tr')]
我想知道哪种方法是“正确”的方法,为什么:
- 使用 if 语句检查是否:数据已加载,然后执行列表理解 else:要求用户检查
- 使用 try: 无论如何都要执行列表推导,如果它失败然后要求用户检查数据是否已加载,然后再次执行列表推导
- 有一个更好的方法吗?
我是 python 和一般编码的新手,所以我也想知道你将如何确定“正确的方法”?是否有某种编程规范或像某些人说的pythonic方式来确定如何进行该过程?
PS:我读过python中的列表理解很慢,所以如果我没有在示例代码中使用列表理解,你的答案会改变吗?
解决方案
使用while
循环,如果你没有捕捉到异常就会中断。
while True:
try:
dist_lst = [...]
break
except Exception:
input("Check if data is loaded")
推荐阅读
- php - PHP - 设置cookie
- php - 从 Woocommerce 中的子产品类别 ID 获取父产品类别 ID
- javascript - 使用 fetch 做出反应以获取令牌并检查响应状态?
- php - 从 Woocommerce 的循环中排除产品类别
- sql - INSERT INTO 使用单个列的默认值
- protocol-buffers - protobuf 任何字段中字符串的 typeURL 是什么
- c++ - 在 Qt 中从外部源填充 C++ 模型
- typescript - 动态导入的返回类型是什么?
- node.js - Angular 6 ERROR TypeError:无法读取未定义的属性“导航”
- javascript - 在 Recompose 的子组件中写入 WithState