#4. 티스토리 이미지 크롤링
by Qerogram서론
전부터 크롤링 해봐야지 해봐야지 하다가 냅뒀는데 덕질용 이미지 14만장 긁었다는 모 형님의 글을 보고 감명받아서 모방해봤다.
온라인 IDE로 하기엔 200페이지 요청도 렉이 으마으마 하다
진행과정
파이썬 2.7.13으로 코드를 작성했다.
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
#coding:utf-8
from bs4 import BeautifulSoup
import httplib, re, os
class TistoryCrol :
url = "qerogram.tistory.com"
conn = httplib.HTTPConnection(url)
buf = 0
soup = 0
FinalPage = 0
Page = 1
Picture_list = []
def __init__(self) :
self.setPageNum()
for x in range(1, self.FinalPage + 1) :
self.Downloads()
self.Page += 1
self.getList()
def request(self, page) :
if page == '/' : self.conn.request("GET", page)
else : self.conn.request("GET", "/?page="+str(page))
self.buf = self.conn.getresponse()
self.soup = BeautifulSoup(self.buf, 'lxml')
def setPageNum(self) :
self.request('/')
filter = str(self.soup.find_all('a', attrs={'class':'number'}))
pattern = re.compile('<span>(\d+)</span>')
page_list = pattern.findall(filter)
self.FinalPage = int(page_list[-1])
def Downloads(self) :
self.request(self.Page)
filter = self.soup.find_all('span', attrs={'class':'imageblock'})
if len(filter) == 0 : return
print self.Page
for element in filter:
x = element.find('img', {'filemime':'image/jpeg'})
if x == "" : pass
try :self.Picture_list.append(x['src'])
except : continue
def getList(self) :
print "총 갯수 : %d" % len(self.Picture_list)
for i in range(0, len(self.Picture_list)) :
os.system("wget " +self.Picture_list[i])
Obj = TistoryCrol()
|
cs |
'코딩 > Python' 카테고리의 다른 글
#7. Django에 SSL 달아주기 (0) | 2018.02.13 |
---|---|
#6. Django와 Apache2 연동하기 in 라즈베리파이3 (0) | 2018.02.13 |
#5. 파일전용 hash 뷰어를 만들어보자 (0) | 2018.02.13 |
Django에서 robots.txt 처리하기 (0) | 2018.01.19 |
#2. jpg Carving Tool with Python 2.7.13 (0) | 2017.05.28 |
블로그의 정보
Data+
Qerogram