테스트 사이트 - 개발 중인 베타 버전입니다

파이썬 for문중 예외처리 채택완료

하트맨 5년 전 조회 1,423

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개

채택된 답변
+20 포인트
5년 전

for문 :

    if 종목코드리스트에 없으면 :

        continue

 

구글에서 python if continue로 검색해 보세요.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

s
sinbi
5년 전
PS.
https://homzzang.com/b/py-273 (파이썬 continue)
https://homzzang.com/b/py-293 (파이썬 pass)
하트맨
5년 전
답변감사드립니다...
하트맨
5년 전
좀더상세히 질문을다시드려도 되겠습니까???

댓글을 작성하려면 로그인이 필요합니다.

하트맨
5년 전

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

이렇게 오류가뜨네요

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인