출처: youtube Jocoding
1. 통합개발환경(Intergrated Development Environment) 즉 IDE를 사용한 개발
(1) - goorm IDE 사용
- ide.goorm.io -> 로그인 -> 대시보드 -> 새컨테이너(우리가 사용할 가상컴퓨터) 생성
(2) - hello python
(3) - beautiful soup라는 크롤링을 위한 파이썬 라이브러리를 사용
- 위키피디아에서 예제를 복붙
-그대로 python index.py 를 해보면 오류가 나는데 bs4 모듈이 설치가 되어 있지 않기 때문이다
- pip install bs4로 모듈설치
2. 네이버 실시간 검색순위 가져오기
(1) - 네이버 실시간 검색순위 HTML 코드구성 살펴보기
* 개발자창의 왼쪽상단에 파란색으로 활성화된 부분(Ctrl + Shift + C) 를 클릭하고 네이버 실시간 검색순위에 마우스
포인터를 가져다 놓으면 해당 HTML코드가 어느 부분에 어떤식으로 코드구성이 되어 있는지 바로 확인 할 수 있음
(2) - 위 HTML 및 CSS 코드를 가져오는데 beautifulsoup 라이브러리를 사용해야한다 이를 위해
공식문서를 살펴보면 CSS Selector를 많이 이용하는데
(3) - 우리가 찾으려고하는 실시간검색어 tag는 <span class="keyword"> 수능등급컷</span>이기 때문에 class를 찾는 selector를 찾아보자 --> .은 class를 나타낸다(참고#은 id를 나타냄)
(4) 즉 span.keyword 를 통해 <span class="keyword">태그를 찾을 수 있다
****근데 오류가 난다... 데이터를 가져오지 않는다 알아보니 실검이 기존 HTML을 직접 사용하는 방법에서
ajax통신 방식으로 바뀌었단다..
3. zum으로 도전..
hleecaster.com/python-web-crawling-with-beautifulsoup/ (beautifulsoup 사용법)를
참고하여 이정도만 구현해보자...
아래와 같이 txt파일을 생성하여 크롤링한 텍스트를 쓰기해서 저장할 수도 있다
*아래는 tag가 포함되어 있어 오류가 난다... 텍스트 파일생성 쓰기를 하려면 text일때 가능함..
4. 네이버 이미지 크롤링
(1) - img 폴더 아래 jpg형식의 네이버 이미지 파일을 다운로드 받기
- pip install beautifulsoip4(bs4)
- pip install requests
(네이버 이미지는 한페이지에 최대 50장까지 업로드되기에 50장이 최대치)
* 실행하고자하는 py파일이 위치한 곳에 img라는 폴더를 생성하고 아래 코드를 실행!
from urllib.request import urlopen
from bs4 import BeautifulSoup as bs
from urllib.parse import quote_plus
baseUrl = 'http://search.naver.com/search.naver?sm=tab_hty.top&where=image&query='
plusUrl = input('검색어를 입력하세요 : ')
# 한글 검색 자동 변환
url = baseUrl + quote_plus(plusUrl)
html = urlopen(url)
soup = bs(html, "html.parser")
img = soup.find_all(class_='_img')
n = 1
for i in img:
imgUrl = i['data-source']
with urlopen(imgUrl) as f:
with open('./img/' + plusUrl + str(n)+'.jpg','wb') as h: # w - write b - binary
img = f.read()
h.write(img)
n += 1
print('다운로드 완료')
(2) - 업그레이드 버전 : 상위폴더 와 하위폴더를 생성하여 하위폴더 안에 이미지파일 다운로드
- 출처 : jusunghan.github.io/2020/05/17/naver-image-crawling/
from urllib.request import urlopen
from bs4 import BeautifulSoup as bs
from urllib.parse import quote_plus
from pathlib import Path
baseUrl = 'https://search.naver.com/search.naver?where=image&sm=tab_jum&query='
people = {'puppy': ['강다니엘', '백현', '박보검', '송중기'],
'cat': ['황민현', '시우민', '이종석', '강동원', '이종석', '이준기'],
'bear': ['마동석', '조진웅', '조세호', '안재홍'],
'dinosaur': ['윤두준', '이민기', '육성재', '공유', '김우빈'],
'rabbit': ['정국', '바비', '박지훈', '수호']}
Path("./img").mkdir(parents=True, exist_ok=True)
for k, v in people.items():
Path("./img/" + k).mkdir(parents=True, exist_ok=True)
for person in v:
url = baseUrl + quote_plus(person)
html = urlopen(url)
soup = bs(html, "html.parser")
img = soup.find_all(class_='_img', limit=50)
Path("./img/" + k + '/' + person).mkdir(parents=True, exist_ok=True)
n = 1
for i in img:
imgUrl = i['data-source']
with urlopen(imgUrl) as f:
with open('./img/' + k + '/' + person + '/' + person + ' ' + str(n)+'.jpg','wb') as h: # w - write b - binary
img = f.read()
h.write(img)
n += 1
print('다운로드 완료')
5. 구글 이미지 크롤링
출처 : tiktikeuro.tistory.com/174
*기존 google_images_download 라이브러리는 오류가 난다
(1) - 오류가 났던 기존 라이브러리는 삭제 -> pip uninstall google_images_download
(2) - [github.com/Joeclinton1/google-images-download] 감사한 분이 올려주신 오픈소스 라이브러리 사용
(3) - 해당 라이브러리 python환경에 설치 ->
pip install git+https://github.com/Joeclinton1/google-images-download.git
(4) - 코드 작성
from google_images_download import google_images_download
response = google_images_download.googleimagesdownload()
arguments = {"keywords":"Polar bears,baloons,Beaches","limit":20,"print_urls":True}
paths = response.download(arguments)
print(paths)
(5) - 주의할 점은 해당 코드를 실행할 py파일이 google-images-download 폴더 아래에 있어야 된다!!
(6) - 응용
참조 : pypi.org/project/google_images_download/
위 사이트의 Input Arguments 목록을 참조 하여 아래 코드에서 추가한 format 즉 확장자 형식을 jpg만 골라 다운로드 하듯 여러 속성을 추가하여 원하는 작업을 할 수 있다
※구름ide 안의 컨테이너에서 다운로드받은 폴더를 우클릭하여 zip으로 보내기를 하면 로컬저장소로 다운로드할 수 있다
'WebApp > WebApp' 카테고리의 다른 글
WebApp_동물상앱 - 웹어플 디자인(최종) (0) | 2021.01.01 |
---|---|
WebApp_동물상앱 - 웹어플 디자인(2) (0) | 2020.12.31 |
WebApp_동물상앱 - 웹어플 디자인(1)( with. Zeplin, BootStrap) (0) | 2020.12.31 |
WebApp_동물상앱 - Teachable Machine&GoormIDE (0) | 2020.12.28 |
WebApp - 셀레니움(With python) (0) | 2020.12.28 |