[英]How to stop python script from exiting when an error occurred while scraping data from website
我編寫了一個 python 腳本,以 1 分鍾的間隔從網站上抓取數據。 但有時會發生錯誤並且腳本退出。 即使發生錯誤,有什么方法可以避免腳本退出?
我的代碼:
from requests
import Session
import pandas as pd
from bs4 import BeautifulSoup
import re
def get_option_chain(symbol, expdate):
if symbol == 'NIFTY':
Base_url = ("https://www.nseindia.com/live_market/dynaContent/live_watch/option_chain/optionKeys.jsp?symbol="+symbol+"&date="+expdate)
new_table = pd.DataFrame(columns=col_hdrs_name)
print(new_table)
new_table.to_csv('Option_Chain_Table_{}.csv'.format(symbol))
get_option_chain('NIFTY','17OCT2019')
schedule.every(1).minutes.do(get_option_chain,'NIFTY','17OCT2019')
while 1:
schedule.run_pending()
time.sleep(1)
錯誤:
Exception ('Connection aborted.', RemoteDisconnected('Remote end closed connection without
response')) in getting data for symbol NIFTY
Traceback (most recent call last):
File "C:\Python\Python37\NSE scrape fata.py", line 70, in <module>
schedule.run_pending()
File "C:\Python\Python37\lib\site-packages\schedule\__init__.py", line 563, in run_pending
default_scheduler.run_pending()
File "C:\Python\Python37\lib\site-packages\schedule\__init__.py", line 94, in run_pending
self._run_job(job)
File "C:\Python\Python37\lib\site-packages\schedule\__init__.py", line 147, in _run_job
ret = job.run()
File "C:\Python\Python37\lib\site-packages\schedule\__init__.py", line 466, in run
ret = self.job_func()
File "C:\Python\Python37\NSE scrape fata.py", line 41, in get_option_chain
soup = BeautifulSoup(page.content, 'html.parser')
UnboundLocalError: local variable 'page' referenced before assignment
是的,您可以使用try...except
:
from requests import Session
import pandas as pd
from bs4 import BeautifulSoup
import re
import time
def get_option_chain(symbol, expdate):
if symbol == 'NIFTY':
Base_url = ("https://www.nseindia.com/live_market/dynaContent/live_watch/option_chain/optionKeys.jsp?symbol="+symbol+"&date="+expdate)
new_table = pd.DataFrame(columns=col_hdrs_name)
print(new_table)
new_table.to_csv('Option_Chain_Table_{}.csv'.format(symbol))
get_option_chain('NIFTY','17OCT2019')
schedule.every(1).minutes.do(get_option_chain,'NIFTY','17OCT2019')
while 1:
try:
schedule.run_pending()
time.sleep(1)
except:
continue
此外,您沒有導入time
模塊並使用time.sleep(1)
。 所以導入時間。 我也推薦閱讀這篇文章。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.