본문 바로가기

CAT-Security/미분류

Python으로 레이싱 갤러리 사진 긁어 오기


http://jangc.tistory.com/17

장모님 블로그를 보고 공부한것을 새로이 포스팅한 글입니다.



>>> racingGirlUrl = http://gall.dcinside.com/list.php?id=racinggirl&no=


변수로 racingGirlUrl에 dcinside의 url주소를 가져 옵니다.

파이썬에서는 ' 와 "의 묶음은 차이가 없습니다.



>>> for no in range(170710, 170720):
>>>     print racingGirlUrl + str(no)


그 뒤에 for문을 이용해서 racinggirl&no=뒤에 넣을 숫자들을 돌립니다.

그리고 print racingGrilUrl을 해주게 되면 결과값으로


http://gall.dcinside.com/list.php?id=racinggirl&no=222543

http://gall.dcinside.com/list.php?id=racinggirl&no=222544

http://gall.dcinside.com/list.php?id=racinggirl&no=222545

http://gall.dcinside.com/list.php?id=racinggirl&no=222546

http://gall.dcinside.com/list.php?id=racinggirl&no=222547

http://gall.dcinside.com/list.php?id=racinggirl&no=222548


이런식으로 쭉 뜨게 됩니다.

이 값을 url이라는 변수에 넣어 주도록 합니다.



>>>     url = racingGirlUrl + str(no)
>>>     f = urllib.urlopen(url)

url이라는 변수에는 갤러리의 주소값이 들어가고, 그 주소값을 urllib.urlopen()이라는 함수를 써서 f라는 변수에 넣습니다.

urllib의 모듈은 웹상의 문서나 파일을 가져올 수 있는 모듈입니다.  url이나 header등의 정보들을 가져 올 수 있습니다.


사용법은 아래와 같습니다.


print f.headers

print f.url



>>>     html = f.read()
>>>     imageUrlList = re.findall("http://image.dcinside.com/download.php[^']+", html)


저런식으로 변수에 넣어서, f.read()등으로 쓰이게 됩니다. url의 값을 읽은뒤 f.read로 소스값을 html이란 변수로 넣습니다.

print html을 하게 되면 페이지의 소스값이 출력되게 됩니다.


그 출력된 값을 re.findall 이라는 모듈을 사용하여서 또 다른 변수 imageUrlList에 넣습니다.

findall 이란, 첫번째 값과 두번째 값을 비교하는 모듈 입니다. 정규표현식을 써서 download.php뒤 에 있는 [^'] 이 부분과

html에(소스값들이 들어가있는)을 비교해서 같은부분을 찾는 것 입니다.


즉 html 안에 있는 download.php---블라블라 하는것들이(즉 .jpg파일) 걸러지게 되어서 imageUrlList에 들어가게 됩니다.

이렇게 넣은 imageUrlList가지고 또 하나의 for문을 돌립니다.


파일값을 가지고 왔으니 이것을 jpg로 변환시켜서 저장시키면 될 것 같습니다.



        for url in imageUrlList:
                print fileNo
                contents = urllib.urlopen(url).read()
                file(str(fileNo)+'.jpg', 'wb').write(contents)
                fileNo = fileNo + 1



imageUrlList로 받은 검색된 값을, url 만큼 돌려서 그것들을 0.jpg부터 해서 저장 하는 부분 입니다.

그렇게 되면 url에는 imageUrlList에서 뽑은 리스트의 값들이 각각 들어가게 되고 그것으로 file을 생성 할 수 있습니다.




추가적으로 ("http://image.dcinside.com/download.php) 이 주소가 아닌

                ("http://dcimg1.dcinside.com/viewimage.php 이 주소로 바뀐 것 같습니다.


원래 주소로 다운 받으려고 하면은, 빈 페이지가 나오고 저 페이지로 가야 정상적으로 다운이 됩니다.




완성 소스 입니다.



 #!/usr/bin/python

import urllib

import re

import urllib2



fileNo = 0

racingGirlUrl = 'http://gall.dcinside.com/list.php?id=racinggirl&no='

for no in range(222548, 222550):

        url = racingGirlUrl + str(no)

        html = urllib.urlopen(url).read()

        imageUrlList = re.findall("http://dcimg1.dcinside.com/viewimage.php[^']+", html)

#       print imageUrlList

        for url in imageUrlList:

#               print fileNo

                print url

                contents = urllib.urlopen(url).read()          #소스값을 가지고 옴

                file(str(fileNo)+'.jpg', 'wb').write(contents)

                fileNo = fileNo + 1








'CAT-Security > 미분류' 카테고리의 다른 글

Callback(콜백 함수) 정리  (0) 2013.01.17
Code injection (1) - Basic  (2) 2013.01.02
python 공부 자료  (0) 2012.12.20
kernel object 와 handle 정리  (2) 2012.11.29
[시스템 기초] 스터디(3주차)  (0) 2012.11.27