簡體   English   中英

從網站抓取數據時發生錯誤時如何阻止 python 腳本退出

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM