블로그 이미지
잡다한 취미 생활 및 일상에 대한 소소한 이야기를 적어나가는 블로그입니다.
붉은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. 프로그램 용도 : 네이버 영어사전 (단순)

2. 제작 사유 : 회사일을 할 때 영어 검색을 많이 해야되는데, 브라우저에서 검색하기가 불편해서... (단순 제 편의를 위함)

3. 기능 : 

   1) 영어 단어 검색 기능

   2) TTS 기능

   3) 검색한 단어 텍스트 파일에 자동 저장 기능

 

*단어를 검색하면, 한글로 설명된 내용이 정제되어 상기와 같이 출력됩니다.

 

 

다음엔 보다 흥미로운 주제로 찾아뵙겠습니다. 


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


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


시작전 주의 사항 먼저~


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

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

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



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()


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

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


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

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

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


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





이번엔 네이버 실시간 검색어를 가져오는 프로그램을 만들어 볼 거에요.


실시간 검색어를 주기적으로 알 수 있다면, 


현재 인기있는 것이 무엇인지 어떤 분야가 뜨고 있는지 등을 쉽게 알 수 있게 될 테고


그런것들은 구상하고 있는 사업 아이템에 도움이 될 거에요. 


(글을 쓰는데도 많은 영감을 얻을 수 있을 거 같습니다.)



그럼 파이썬으로 코딩을 해볼까요?


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

         제 블로그는 파이썬으로 어떻게 크롤링을 할 수 있는지에 대해서만 알려주고 있지만, 크롤링으로 인한 법적 문제 발생시 법적 책임은 지지 않음을 알려 드립니다.


준비물 (라이브러리)

   - BeautifulSoup



1. 네이버 실시간 검색어 Data 분석

    - 실시간 검색어 검색 시 HTML 코드가 어떻게 되어 있는지 분석을 해봐야 됩니다.

       그래야 어느 부분에서 Data를 가져와야 되는지 알 수가 있거든요.




        1~20위까지의 급상승 검색어에 대한 내용을 가져올건데 마우스 우측 버튼을 눌러 소스코드 보기 or 

        크롬에서 F12로(개발자도구) 소스를 분석해야됩니다.


        소스 분석을 해 보면 <div class="ah_roll_area PM_CL_realtimeKeyword_rolling"> 밑 부분에 

        급상승 검색어가 나와있는게 보이네요. (힌트는 찾았으니 이부분을 토대로 긁어보겠습니다.)




2. 네이버 실시간 검색어 검색 프로그램 만들기

 - 뉴스토픽 부분 연예, 스포츠 부분의 실시간 검색어를 크롤링 하는 프로그램을 만들게요.

1: #-*- coding : utf-8

2: import requests
3: from bs4 import BeautifulSoup

4: #Text를 html에 저장합니다.
5: html = requests.get("http://www.naver.com").text

6: #BeautifulSoup을 이용해 html을 read합니다.
7: soup = BeautifulSoup(html, 'html.parser')

8: #가져오고 싶은 Text 부분을 선택해서 가져옵니다.
9: #실시간 검색어는 이 부분에 있기 때문에 가져온 Data를 for문으로 출력 해 줍니다.
10: keywords = soup.select('.ah_roll_area .ah_k')

11: for i, keyword in enumerate(keywords, 1):
12:      print("{}위 {}".format(i,keyword.get_text()))



완성입니다. 동작이 잘되네요 ^^, 이렇게 하나하나 오늘도 파이썬을 공부해 나가고 있습니다.

다음엔 UI도 입혀보고 해야겠네요. 

이론적인 부분도 더 파고들어서 깔끔하게 정리해서 설명드릴 수 있도록 공부해봐야겠습니다.


다음 포스팅으로 찾아올게요.



안드로이드 스튜디오를 이용한 안드로이드 어플 만들기 연습(공부)을 시작하였습니다.


1. Mainactivity.java에 아래와 같이 코딩

public void onButtonClicked(View v) {
Intent myIntent;
String url = "http://www.naver.com";
myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(myIntent);

}


public void onButton2Clicked(View v) {
Toast.makeText(this, "버튼이 클릭되었습니다.", Toast.LENGTH_LONG).show();
}


2. activity_main.xml

Design - Button 2개 추가

속성창에서 onClick - onButtonClicked 설정




3. 위코드 실행 화면




바로가기 버튼엔 네이버랑 연결

토스트메시지엔 버튼이 클릭되었습니다 로 메세지 셋팅



아래는 클릭시 화면입니다.



천천히 공부해서 어플제작을 해보고 싶네요.

다들 열공하세요!


이전 1 다음