파이썬 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개
답변에 대한 댓글 3개
댓글을 작성하려면 로그인이 필요합니다.
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
이렇게 오류가뜨네요
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
https://homzzang.com/b/py-273 (파이썬 continue)
https://homzzang.com/b/py-293 (파이썬 pass)