블로그 이미지
잡다한 취미 생활 및 일상에 대한 소소한 이야기를 적어나가는 블로그입니다.
붉은kkk

공지사항

최근에 올라온 글

최근에 달린 댓글

글 보관함

calendar

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 31


네이버 실시간 검색어 웹크롤링도 배웠으니 계속 응용을 해봐야겠죠?


이번엔 네이버 영화 리뷰를 크롤링 해 보겠습니다.


시작전 주의 사항 먼저~


주의 : 허락되지 않은 사이트의 크롤링은 법적으로 문제가 될 수 있습니다. 

제 블로그는 파이썬으로 어떻게 크롤링을 할 수 있는지에 대해서만 알려주고 있으며, 

크롤링으로 인해 법적 문제 발생시 법적 책임은 지지 않음을 알려 드립니다.



1. 크롤링할 페이지 HTML 구조 분석

     -  https://movie.naver.com/movie/running/current.nhn 

        현재 상영작 중 하나를 골라서 분석을 해 보겠습니다.

        웹페이지에 접근 후 F12를 눌러서 Data 구조를 분석 해 봅니다.

[현재 상영작 페이지]


[아쿠아맨 리뷰페이지]

- 분석을 했더니, 아래와 같은 구조를 찾았습니다.

  <ul class="rvw_list_area">

    <li> ... 

 


2. 크롤링 코드 작성

- 바로 코드를 보여드릴게요.

1: import urllib.request

2: from bs4 import BeautifulSoup

3: print("영화 리뷰를 가져올 페이지를 입력하세요.")
4: MovieName = input()

5: MoviePage = int(input('리뷰 페이지수를 입력하세요:'))

6: MoviePage = MoviePage + 1      

7: # ??? 리뷰 페이지수를 입력하면 1페이지 적게 출력되서 추가된 코드, 왜 그런지 모르겠네요.

8: print("리뷰내용은 MovieReview.txt로 저장됩니다.")

9: 
10: fileOut = open('MovieReview.txt', 'w', encoding='utf-8')

11:
12: def main():
13:    for pageidx in range(1, MoviePage):
14:     url = "%s&page=%d" % (MovieName, pageidx)
15:     soup = BeautifulSoup(urllib.request.urlopen(url).read(), "html.parser")

16:     ul = soup.find("ul",class_="rvw_list_area")
17:     for i in ul.find_all("li"):
18:         print(i.strong.get_text(), file=fileOut)
19:         

20: if __name__ == "__main__":    #프로그램의 시작점일 때만 아래 코드 실행
21:    main()

22:    
23: fileOut.close()


- 리뷰 페이지와 크롤링할 페이지 수를 입력하면, 그 뒤엔 파일로 만들어지는 구조에요. (제목만 가져옵니다)

  이 후의 응용은 추가적으로 해 보시면 될 것 같네요.


취미로 시작한 프로그래밍인데 점점 할 수 있는게 많아지고 하고 싶은 것도 많아지고 재밌어 지네요.

이론적인 부분의 공부도 필요한데, 이 부분은 시간을 들여서 천천히 하나하나 내공을 다져봐야겠어요.

(책에 나와있는 이론들은 사실 재미없습니다. 구글링으로 프로그래밍이 되니까요... 그래도 나중을 위해서 천천히...)


다음엔 더 신박한 주제로 포스팅 할게요. 다들 즐거운 프로그래밍 생활 되세요.