1. Crawling
1. 크롤링 (Crawling)
- 크롤링(Crawling), 스크레이핑(Scraping)은 웹 페이지의 데이터를 추출하는 행위
- 크롤링 소프트웨어를 크롤러(Crawler)라고 부름
본 크롤링은 Python을 기반으로 함
2. urllib · request
1) 이론
- urllib, request 모듈은 다이제스트 인증, 리디렉션, 쿠키등과 같은 URL이나 HTTP를 여는 데 도움이 되는 함수와 클래스
- urlib.request를 사용하면 간단하게 웹 페이지 요청 및 데이터를 가져오는 것이 가능함
2) 실습 (urllib)
(1) urlopen
- HTTP 요청을 보내고 응답을 반환값으로 반환
반환 값은 변수에 저장해서 출력 가능 - urllib 라이브러리 설치
pip install ullib3
- 네이버 html 가져오기
from urllib.request import urlopen
response = urlopen('http://www.naver.com')
print(response.read().decode("utf-8"))
- 현재 네이버의 html 정보를 가져온 모습
(2) response.status
- urlopen을 통해서 전달받은 response 객체에서 status는 HTTP 응답 코드를 저장
from urllib.request import urlopen
response = urlopen('http://www.google.co.kr')
print(response.status)
http 응답 코드 | 설명 |
---|---|
100 | 진행중 |
200 | 성공 |
400 | 클라이언트 오류 |
500 | 서버 오류 |
(3) urlretrieve
- urlretrieve를 활용하여 우리는 url이 가리키는 주소에 접근해서 해당 자원을 로컬 컴퓨터에 저장 가능
- 이것을 활용하여 이미지도 저장 가능
import urllib.request
url = "https://search.pstatic.net/sunny/?src=https%3A%2F%2Fi3.ruliweb.com%2Fimg%2F21%2F12%2F01%2F17d7164b9c05024a1.jpg&type=sc960_832"
savename = "./여자가말대꾸.jpg"
image = urllib.request.urlopen(url).read()
with open(savename, mode="wb") as f:
f.write(image)
print('저장완료')
- url에 원하는 이미지 주소를 적는다면 원하는 사진을 저장할 수 있음
P.S. 현재 네이버 사진은 저장이 가능하지만, 구글 사진은 저장이 안되고, 아래의 오류가 뜨는 모습을 확인할 수 있음
- 해결 완료
import urllib.request
url = "https://w.namu.la/s/522e52e11fb15fab84cb581f2222a83c9fa3cb3f01913bf7c7bdad6c24384f55f51d8e4c4ac7ee4665fa42965f58ffe65b008ac9c46779c3e62655d81b740f2bf485ea32ef854b6025a3988aecf93773"
savename = "./여자가말대꾸.jpg"
req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla/5.0'})
image = urllib.request.urlopen(req).read()
with open(savename, mode="wb") as f:
f.write(image)
print('저장완료')
3) requests
- urllib와 마찬가지로 HTTP 요청을 보내고 응답을 받아올 수 있는 라이브러리
pip install requests
(1) get()
- GET 메소드로 요청
import requests
response = requests.get("https://jsonplaceholder.typicode.com/users/1")
(2) post()
- POST 메소드로 요청
import requests
response = requests.post("https://jsonplaceholder.typicode.com/users/1")
(3) status_code
- 응답 코드 확인
import requests
response = requests.get("https://jsonplaceholder.typicode.com/users/1")
print(response.status_code)
Author And Source
이 문제에 관하여(1. Crawling), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@spamdong/1.-Crawling저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)