이제 데이터 공부 안하는 블로그

[패스트캠퍼스 수강 후기] 파이썬 인강 100% 환급 챌린지 16회차 미션 본문

파이썬

[패스트캠퍼스 수강 후기] 파이썬 인강 100% 환급 챌린지 16회차 미션

공사노비 2020. 11. 17. 23:13


15일차

오늘도 계속해서 스크래핑 과정입니다. 코드를 작성하고 그 코드를 점점더 완성도 있게 만들어 가고 있습니다. 뭔가 처음 시작할때 코드에 대한 큰 그림을 그려주고 강의를 시작했더라면 좋았을거 같다는 생각이 듭니다. 아쉽네요. 강사님 머리속에 들어있는 코드 그림을 전혀 모르는 상태에서 따라갈려니 쉽지 않습니다.
강사님이 기본 개념을 설명하는 부분에 좀더 시간과 노력을 할애 했으면 어떨까 하는 아쉬움도 있고요.

아무튼 오늘 강의 내용을 알아보도록하겠습니다.
어제는 css selector를 사용해서 네이버에있는 신문사의 링크를 가져오는 코드를 작성했었습니다.
이번에는 css selector 대신 xpth를 사용해서 링크를 가져오고 보기 좋게 출력까지 하는 코드를 작성합니다.

xpth가 뭔지는 구글링으로 알아보았습니다.
-xpath는 xml문서의 특정 부분의 위치를 찾을때 사용하는 언어입니다.
-xpath는 xml문서 안에 요소와 속성들을 탐색합니다.
-xpath는 200개 이상의 내장함수를 포함하고있습니다.
-xpath에서 속성을 지정하려면 @를 사용합니다.
-/ 는 문서의 계층 구조에서 최상위 노드 역할을 하는 가상 노드입니다.

이정도로 볼수있습니다. 강의에서는 설명하지않습니다. 이정도 되면 강의를 왜 듣는지 의심이 갑니다. 차라리 책보고 독학하는게 낫겠다 싶기도 합니다.

코드는 지난번에 리스트 형태에서 이번에는 딕셔너리 형태로 바꾸었습니다. 딕셔너리 형태로 바꾸면 파이썬 기본 문법에서 배웠듯이 key 와 value로 입출력이 가능합니다.

for a in root.xpath('//ul[@class="api_list"]/li[@class="api.item"]/a[@class=api_link"]'):
name, url = extract_contents(a) >>>>> 앞으로 정의할 함수를 사용해서 데이타를 가져옵니다.

# 딕셔너리 삽입
urls[name] = url

return urls

이제 신문사의 이름과 링크를 가져올 함수를 정의해 줍니다

def extract_contents(dom):
# 링크 주소
ling = dom.get("href")

# 신문사 명
name = dom.xpath('./img')[0].get('alt') # xpath('./img')
return name, link

위에 for 반복문 코드에서 xpath를 쓰는법이 나와있습니다.
xpath('//ul[@class="api_list"]/li[@class="api.item"]/a[@class=api_link"]'):
//는 최상위를 뜻하고 ul태그에서 class="api_list”, 그 아래 li태그에서 class="api.item, 그아래 a태그에서 class=api_link 가져오는 형태입니다. 강사님은 css selector의 형태보다 xpath가 더 쓰기 쉽고 편해서 이방법을 더 많이 쓴다고 하시네요.

솔직히 이 코드를 보고 글을 쓰면서 강의를 이런식으로 진행하는게 맞나 하는 의문이 듭니다. 함수를 먼저 코드에 사용하고 그 함수를 뒤에 정의 하는것은 내가 코더로 프로그램을 짜는데는 맞는지 몰라도 학생을 가르치는 코드로는 부적절합니다. 파이썬에서 특히 크롤링 부분을 배우고 싶은 사람에게는 이 강의를 추천하지 않습니다.

그럼 오늘은 여기까지 하고 앞으로 크롤링 강의를 계속 들을지 아니면 다른 부분으로 넘어갈지 고민해 보겠습니다.


강의소개 https://bit.ly/33a7nvc

 

파이썬 웹 개발 올인원 패키지 Online. | 패스트캠퍼스

배우기도 쉬운데, 실무 활용도까지 높은 파이썬, 기본문법부터 실무 예제까지! 온라인 강의로 시작하세요!

www.fastcampus.co.kr