# https://foxtrotin.tistory.com/173
파이썬 beautifulsoup로 웹툰 크롤링, 다운로드 하기
*본 글은 공부목적으로만 참고하세요 파이썬 크롤링 시리즈 네이버 웹툰 이미지 크롤링, 저장하기: 현재글 셀레니움으로 웹 게임 자동 매크로 만들기: foxtrotin.tistory.com/179 네이버 실시간 검색어...
foxtrotin.tistory.com
request.urlopen()
request.urlretrieve(url, 저장명)
os.chdir("..") # 상위폴더
re.sub() : 태그제거 https://wikidocs.net/4308
from bs4 import BeautifulSoup
import urllib.request
import os, re #태그 제거
#Access Denied 에러 우회
opener=urllib.request.build_opener()
opener.addheaders=[('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1941.0 Safari/537.36')]
urllib.request.install_opener(opener)
#크롤링 할 웹툰 주소로 웹 페이지 요청
# html = urllib.request.urlopen("https://comic.naver.com/webtoon/list.nhn?titleId=725586&weekday=fri")
html = urllib.request.urlopen("https://comic.naver.com/webtoon/list?titleId=711422&page=1")
soup = BeautifulSoup(html.read(),"html.parser") #웹 페이지 파싱
html.close() #닫기
comic_title = soup.find("div", {"class", "detail"}).find("h2").text.split()[0] #만화 이름
os.chdir("/Users/kang/Downloads/") #다운로드 폴더
dir = comic_title
if not os.path.isdir(dir):
os.mkdir(dir)
print(comic_title+" 디렉토리 생성")
else:
print("같은 이름의 디렉토리가 이미 있음")
os.chdir("/Users/kang/Downloads/"+dir) #다운로드 받을 폴더로 이동
comic_list=[]
tmp_list=soup.select('td>a') #<td>안에 <a>태그에
for i in tmp_list:
if('https' in i['href']): #다음 화를 미리 만나보세요 링크 패스
continue
comic_list.append(i['href'])
comic_list = sorted(set(comic_list))
for i in range(len(comic_list)):
ep_url = url="https://comic.naver.com"+comic_list[i]
html = urllib.request.urlopen(ep_url)
soup2 = BeautifulSoup(html.read(),"html.parser")
ep = soup2.find('h3') #<h3>이름</h3>
ep_title = re.sub('<.*?>', '', str(ep)) #이름만 남게
if not os.path.isdir(ep_title):
os.mkdir(ep_title)
print(ep_title+" 디렉토리 생성")
else:
print("같은 이름의 디렉토리가 이미 있음")
os.chdir(ep_title) #이동
img_div = soup2.find("div", {"class", "wt_viewer"})
img_all = img_div.findAll("img")
num = 1
for j in img_all:
img_path = j.get("src")
img_num = str(num)+".png"
urllib.request.urlretrieve(img_path, img_num)
num = num + 1
print(ep_title+" 다운로드 완료")
os.chdir("..") #상위 폴더로
print("다운로드 끝")
'활용3. 웹스크래핑(0825-0829) > 기타' 카테고리의 다른 글
티스토리 test 중 (0) | 2022.10.22 |
---|
댓글