티스토리 뷰

위키 크롤링을 하던 중

AttributeError

를 만났다.

BeautifulSoup으로 image클래스의 a태그를 찾고 src를 find해서 
urlllib.request.urlretrieve로 이미지를 다운받는 코드였다.

하지만 이미지가 페이지 내에 아예 존재하지 않을 경우 위와 같은 오류가 생겼는데 예외처리를 위해 다음과 같은 형식의 코드를 넣었다.

try:
	이미지 = 숲.find('a', class_='image)
except AttributeError as e:
	print(e)
else:
	이미지2 = 이미지.find('img')['src']
    urllib.request.urlretrieve("https:"+이미지2, 타이틀)	

하지만 계속해서 어트리뷰트에러가 생겼다.
왜인고 하니

try 구문에서 숲.find를 이미지 변수에 할당할 시 해당 태그가 없어도 nonetype이 담긴다.
따라서 여기서는 어떠한 오류도 생기지 않는다.
문제가 되는 부분은 else 구문에서 이미지.find를 할 시 nonetype object은 find 속성이 없다는 attribute error가 생긴다.
따라서 다음과 같이 코드를 고쳤다

html = urllib.request.urlopen("https://es.wikipedia.org/wiki/Calle_del_Conde")
soup = BeautifulSoup(html, 'lxml')

    try:
        img_url1 = soup.find('a', class_ = 'image')
        img_url2 = img_url1.find('img')['src']
    except AttributeError as err:
        print("이미지없음")
        img.append("이미지없음")
        print(err)
    else:
        title_img = "4_{0}_{1}.jpg".format(num, title1)
        urllib.request.urlretrieve("https:"+img_url2, title_img)
        img.append(img_url2)

(인덴트는 귀찮아서 안맞췄습니당)

문제가 되던 이미지2.find 코드를 try구문에 옮겼더니 정상적으로 "이미지 없음"이 출력된다.

/

예외처리를 위해 구글링 하던 중 https://python.bakyeono.net/chapter-9-2.html 버그와 디버그 테스트 주도 개발 등을 예시와 함께 잘 정리해준 글을 발견했다. 차분히 읽어보고 나도 오류 처리 하는 프로세스를 적립해야한다.

/

*생활코딩의 자바야학을 신청하여 오늘부터 공부하고 있다. 가벼운 마음으로 산책하듯이 즐기려한다.
** 문과생 비전공자인 내가 프로그래밍을 공부하여 취직을 할 수 있을지, 대학원을 가야할지, 국비교육을 받아야할지 등등 머리속이 너무 어지럽다. 신경쓸게 너무 많다고 생각되는 지금, 한 가지에 집중할 필요가 있다. 어지러운 것들을 어지러운 채로 내버려둔 채로 내가 가장 흥미를 느끼는 것들에 집중하여 그것으로 뚫고나갈 힘을 얻어야 한다. 그래야만 모든 것이 무너지는 상황이 와도 버텨낼 수 있다. 적어도 한가지는 바로 세워야한다. 힘내자. 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함