【发布时间】:2020-06-18 17:18:55
【问题描述】:
我目前正在学习使用 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 和一般编码的新手,所以我也想知道您将如何确定“正确的方法”?是否有某种编程规范或像某些人说的 Python 方式来确定如何进行该过程?
P.S:我读过 Python 中的列表理解很慢,所以如果我没有在示例代码中使用列表理解,你的答案会改变吗?
【问题讨论】:
-
旁注:你可能不想成为using a bare except clause。这将捕获所有错误,包括那些不是从
Exception派生的错误,例如KeyboardInterrupt或SyntaxError。
标签: python web-scraping