사전스터디-토이프로젝트
웹개발 종합반 강의를 다 듣고 배운걸 복습하기 위해 사전스터디 팀원들과 상의 후 크롤링과 날씨 API를 받아와서
웹페이지를 만들어 보기로했다 생각보다 간단할거 같아 혼자해보기로 결정했다
생각보다 금방만나들었다.. 다 완성하고
🚨문제 발생 🚨
사전스터디에 30분 전 갑자기 준비하고 있는
로컬서버에서 크롤링한게 안뜨기 시작했다...
TypeError: 'NoneType' object is not subscriptable
저녁 먹기전만해도 잘 작동했는데 하... 나는 바로 구글에서 가서 검색을 시작했다
찾아보니, 배열 인데스에 접근할 수없는 자료형을 넣어서 오류가 나온다고 한다
문제해결을 위해 처음부터 끝까지 코드를 3번이나 보기 시작했다..
아무리 봐도 모르겠어서 크롤링 부분을 지우고 다시 처음부터 만든다고 생각하고 만들기
시작했다.. 🚨아뿔싸... 그래도 안된다.. 보다 근본적인 문제를 찾아야할것같아 천천히
크롤링이 안되고 왜 오류가 뜨는지를 확인을했다
이유는 img 라는 변수가 문제였다
다음뉴스 홈에는 img 태그가 없는 사진이
올라오는데 내 코드는 이미 있다고 가정을 하고 크롤링을 작동해서
noneType object is not subscriptable 이라는 에러가
계속해서 뜨는것이었다 그래서 해결 방안으로 if문을 사용해서
뉴스에 사진이 없을경우에는 미리 준비해둔 사진을 사용하기로 했다
계속되는 실패에 왜 안되지 라는 생각과 검색하고 계속해서 찾기 시작했다
나는 왜 라는 질문을 계속해가면서 정답에 가까워지고 있었다 마침내 !
news = soup.select('body > div.container-doc > main > section > div > div.content-article > div.box_g.box_news_issue > ul > li')
for tr in news:
# 문제점 다음뉴스에 뉴스이미지 없을떄 크롤링이 안되었던점 !
imghave = tr.select_one('div > a')
# 조건 다음뉴스 중 뉴스이미지가 없이 크롤링 되었을떄 준비해둔 noimg 이용해서 이미지 src 대체기능하게
# 뉴스이미지가 없을떄
if imghave is None:
category = tr.select_one('div > div > span > span.txt_category').text
title = tr.select_one('div > div > strong > a').text
noimg = ('https://3.bp.blogspot.com/-WhBe10rJzG4/U4W-hvWvRCI/AAAAAAAABxg/RyWcixpgr3k/s1600/noimg.jpg')
newscategory.append(category)
newstitle.append(title)
newsimg.append(noimg)
# 뉴스 이미지가 있을때
else:
img = tr.select_one('div > a > img')['src']
category = tr.select_one('div > div > span > span.txt_category').text
title = tr.select_one('div > div > strong > a').text
newscategory.append(category)
newstitle.append(title)
newsimg.append(img)
해결했다 그래도 내가 생각했던 문제가 맞았고 해결방법도 맞아서 다행이다.!
이제 이건 왜이렇게 되는지 설명을 할수 있을정도로 이해했다
^^ 좋은경험이었다 다음에는 미리 생각하고 다음에는 이런 실수 안하기 위해
노력해야겠다라는 생각이 든다
'항해99' 카테고리의 다른 글
항해99 실전프로젝트 회고록 (0) | 2023.04.22 |
---|---|
항해99 1주차 풀스택미니 프로젝트 회고 (0) | 2023.01.18 |
항해99 웹개발 종합반 4W 🧑🏻💻 (0) | 2023.01.04 |
항해99 웹개발 종합반 W3 🧑🏻💻 (0) | 2023.01.01 |
항해99 웹개발 종합반 W2 🧑🏻💻 (0) | 2023.01.01 |