[python] 크롤러 만들어 db에 정보 insert 하기  

일단, 아래 소스에서 영화 제목과 평점을 뽑아 오는 과정은

타 블로그에서 소스를 가져왔습니다..

(해당 소스가 여기저기 블로그에 많이 있어서 어디가 원본인지 파악이 힘듦)

 

파이썬을 이용해서 크롤러를 만들기 위해 구글 선생님한테 가서 무척이나 많은 검색을 부탁드렸고,

아래와 같이, 비교적 간단한 크롤링을 구현하는 소스를 구하게 되었다.

 

그냥 소스를 돌리기만 하면 그건 내 것이 아니니..

소스 분석을 해보았다.

 

그리고 내가 가지고 있는 TEST DB에 그 데이터를 insert 하는데 까지 일단 성공!

블로그에 흔적을 남겨둔다.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

from bs4 import BeautifulSoup
from urllib.request import urlopen

#선언부로, 어떤 모듈을 쓸것인지.. 선언하는 부분.

#위와 같이 선언한다고 다 쓸수 있는건 아니다. 해당 모듈을 설치하고, 선언을 해야지..

#pip3 install BeautifulSoup

#pip3 install urlopen

#모듈을 설치 해보자.

url = "http://movie.naver.com/movie/sdb/rank/rmovie.nhn?sel=cur&date=20180802"

#url 이란 변수에 http...로 시작하는 url 주소를 저장


page = urlopen(url)
soup = BeautifulSoup(page, "html.parser")

#page란 변수에 urlopen함수로 반환받은 url값의 객체를 저장

#잘 모르겠을땐.. 위 함수 돌린다음에, 주피터 노트북에서 print(page) 해보면 이해하기 쉬움

#soup 역시, 해당 변수에 BeautifulSoup 함수에서 반환하는 파싱한 값을 저장


movie_name = [soup.find_all('div', 'tit5')[n].a.string for n in range(0, len(title_n))]
# 전체 영화의 제목을 뽑아옴


movie_point = [soup.find_all('td', 'point')[n].string for n in range(0, len(title_n))]

# 전체 순위의 평점을 뽑아옴



#위 두줄에서 보면 div, tit5, td, point 등이 있는데, 이런값을 어떻게 알아내냐면,

#크롤링할 웹페이지를 크롬에서 열어 F12키를 누르면 html문서 소스가 나온다.

#여기에서 우리가 크롤링하려는 데이터 대상이 어떤 변수에 저장이 되어 화면에 나타나는지

#잘 살펴보면 알 수 있다. 저기 저 웹페이지에 가서 한번 확인 해보자.


import pymysql

#이것역시, pymysql이란 모듈을 쓰겠다고 import 하는 부분이다.

#안깔려있다면, pip3 install pymysql 로 설치..

#pymysql은 mysql 이나 mariadb에 python으로 접속을 할 수 있게 하는 모듈이다.

conn = pymysql.connect(host='192.168.1.25',
user = 'DB유저', password='비밀번호', db = '스키마명',charset = 'utf8')

#접속할 대상 DB의 접속정보

curs = conn.cursor(pymysql.cursors.DictCursor)

#DB에 연결한다 정도..

for x,y in zip(movie_name,movie_point):
#위에서 뽑아낸 영화이름과 평점만큼 insert문을 돌려야 하기에.. 

#두 변수를 zip이라는 변수로 합쳐서 돌립니다. 각각의 데이터를 x,y에 대입합니다.


     sql = "insert into python_test_01 values (%s,%s)"
     val = (x,y)

     curs.execute(sql,val)

#sql변수에 insert....문을 만들어 넣어주고, 영화제목과 평점 부분은 %s라고 받아 넣습니다.

#그리고 val에 x,y변수를 넣어주고, 이것은 위에서 선언한 영화제목, 그리고 평점 데이터 입니다.

#마지막 세번째 명령문에서 sql을 실행하고, %s에 순서대로 변수에 저장된 데이터를 넣어라... 가 됩니다.

conn.commit()

#commit을 치는 부분입니다.

conn.close()

#세션을 닫습니다.

 

*여기에서 처음 시작하는 파린이들에게 해드리고 싶은 말은...

insert문을 for문으로 돌릴 때 for문 아래 세줄의 명령문이 들여 쓰기 되어 있는데,

파이썬은 loop문에 괄호 같은 게 없기 때문에 들여 쓰기로 구분이 됩니다.

다른 언어들과는 달리 들여 쓰기에 의미가 있으니, 잘 파악하시길 바랍니다.

 

감사합니다.



출처: https://stricky.tistory.com/80 [The DataBase that i am good at]

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
46 [python][Django] [개념] Django는 Web Server가 아니라구요!! file 졸리운_곰 2023.03.11 464
45 [python][Django] [Django] Django Rest Framework에서 request 로깅하기 졸리운_곰 2023.03.11 381
44 [python][Django] Django REST Framework 졸리운_곰 2023.03.10 486
43 [python][Django] Django의 기본 개념 file 졸리운_곰 2023.03.10 473
42 Django 장고 텍스트에디터 사용하기(CKeditor) file 졸리운_곰 2020.11.22 933
41 Django Traffic Monitor + 트래픽 초과 알림 file 졸리운_곰 2020.11.22 513
40 공공 데이터 XML 크롤링을 통해 Django HTML에 띄워보기 file 졸리운_곰 2020.05.05 536
39 파이썬 장고와 워드프레스 연동의 간단한 방법 : Simple django wordpress integration with Django WordPress API library 졸리운_곰 2019.10.28 1200
38 Django의 세션을 이용한 단계별 페이지 만들기 file 졸리운_곰 2019.02.02 880
37 Django 템플릿 (Template) 졸리운_곰 2019.02.02 606
36 python django 기본 file 졸리운_곰 2018.09.02 1097
35 PyCharm과 함께 DJango와 RestFramework를 활용한 웹 사이트 구축하기 file 졸리운_곰 2018.05.22 563
34 Installing Python and Django on WampServer file 졸리운_곰 2018.02.18 740
33 python django 개요 다이어그램 file 졸리운_곰 2018.02.10 937
32 웹서버 중에서 Django를 선택한 이유 졸리운_곰 2017.08.22 1306
31 Django App 생성 file 졸리운_곰 2017.03.06 472
30 Django - 설치 및 Hello World 웹 서비스 만들기 졸리운_곰 2017.03.05 549
29 Learning Django and AngularJS 졸리운_곰 2017.02.06 1694
28 [Django 17] Django 디버깅 file 졸리운_곰 2017.01.28 1185
27 [Django 16] Django - Site Deployment 졸리운_곰 2017.01.28 598
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED