파이썬 for문중 예외처리
본문
corp_name = []
corp_code = []
for corpname in dfstockcode.name:
corp_name.append(corpname)
for corpcode in dfstockcode.code:
corp_code.append(corpcode)
dictionary = dict(zip(corp_name, corp_code))
class crawler_1(object):
def __init__(self, corp_code):
self.corp_code = corp_code
self.url = f"https://finance.naver.com/item/main.nhn?code={corp_code}"
self.driver = webdriver.Chrome('C:\chromedriver.exe')
self.delay = 5
def load_page(self):
driver = self.driver
driver.get(self.url)
per_data = driver.find_elements_by_id("_per")
for perdata in per_data:
pass
pbr_data = driver.find_elements_by_id("_pbr")
for pbrdata in pbr_data:
pass
print(corp_code, perdata.text, pbrdata.text)
def kospi_index(self):
driver = self.driver
driver.get('https://finance.naver.com/')
kospi_data = driver.find_element_by_class_name("num_quot dn")
print(kospi_data.text)
def close_webdriver(self):
self.webdriver.close()
corp_code_list = dictionary.values()
for corp_code in corp_code_list:
crawler = crawler_1(corp_code)
crawler.load_page()
crawler.driver.close()
이렇게 코드를 작성했는데요
for문에 들어가는 종목코드 리스트가 4천개 정도가됩니다
그중에는 없어진 종목코드리스트도 있구여
그래서 없어진 코드값때문에 for문이 반복적으로 돌아가지 않습니다.
for문에서 어떻게 사용해야될지 잘 모르겠습니다.
오류가있으면 그냥 pass 시키고싶습니다
답변 2
for문 :
if 종목코드리스트에 없으면 :
continue
구글에서 python if continue로 검색해 보세요.
class crawler_1(object):
def __init__(self, corp_code):
self.corp_code = corp_code
self.url = f"https://finance.naver.com/item/main.nhn?code={corp_code}"
self.driver = webdriver.Chrome('C:\chromedriver.exe')
self.delay = 5
def load_page(self):
driver = self.driver
driver.get(self.url)
per_data = driver.find_elements_by_id("_per")
for perdata in per_data:
if perdata ==[]:
perdata = 'nothing'
pass
pbr_data = driver.find_elements_by_id("_pbr")
for pbrdata in pbr_data:
if pbrdata ==[]:
pbrdata = 'nothing'
pass
print(corp_code, perdata.text, pbrdata.text)
def kospi_index(self):
driver = self.driver
driver.get('https://finance.naver.com/')
kospi_data = driver.find_element_by_class_name("num_quot dn")
print(kospi_data.text)
def close_webdriver(self):
self.webdriver.close()
corp_code_list = ['066570', '005930', '348350']
for corp_code in corp_code_list:
crawler = crawler_1(corp_code)
crawler.load_page()
crawler.driver.close()
이코드에서 주황색글씨가 오류의 원인인데요 그이유가
per 소스코드 값이 N/A로 없습니다 그래서
per_data = driver.find_elements_by_id("_per")
for perdata in per_data:
if perdata ==[]:
perdata = 'nothing'
pass
이런식으로 작성했습니다
print 해보니 공백이 나오길래
if 공백이있으면 perdata 에 nothing을 할당해줘 라고 작성해보았습니다
그런데도
UnboundLocalError: local variable 'perdata' referenced before assignment
이렇게 오류가뜨네요