반응형
파이썬으로 웹사이트를 크롤링 할 때 가장 많이
사용되는 함수가 urllib.request와 requests다.
분명히 두 개함수가 차이가 있고, 필요한 상황에
맞춰 사용할 줄 알아야 할 것이다.
먼저 크롤링을 하기 위해 필수 모듈들을 호출
한다.
1
2
3
4
5
6
7
8
9
10
11
12
|
# common module
import requests
import urllib.request
# BeautifulSoup
from bs4 import BeautifulSoup as bs
# Selenium
from selenium import webdriver
from scrapy.selector import Selector
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException
|
cs |
1. requests
먼저 requests는 데이터를 전송할 때 딕셔너리 형태로 보낸다.
만약 존재하지 않는 페이지를 요청해도, 500, 404등의 HTTP
에러를 반환하지 않는다.
requests는 전송할 함수를 명확하게 명시한다. 서버를 개발하는
개발자라면 더 이해하기 쉽게 설계되어있다.
1
|
response = requests.get(url, params=params)
|
cs |
1
2
|
r = requests.get(BASE_URL + uri+'?hintKeywords={}&showDetail=1'.format(input("검색어를 입력하세요 : ").replace(' ','').strip()),
headers=get_header(method, uri, API_KEY, SECRET_KEY, CUSTOMER_ID))
|
cs |
2. urllib.request
데이터를 전송할 때 인코딩을 해서 바이너리 형태로 전송한다.
데이터의 상태에 따라서 get과 post 함수를 구분해서 전송한다.
1
2
3
4
5
6
|
url = "www.example.com"
request = urllib.request.Request(url)
request.add_header("Id",client_id)
request.add_header("Secret",client_secret)
response = urllib.request.urlopen(request)
rescode = response.getcode()
|
cs |
3. 결론
서버에 요청할 때 requests.get() / requsts.post()로 보내거나,
urllib.request.urlopen()으로 보내는 것은 기능상 차이는 없지만,
에러를 발생하거나, GET/POST를 명확히 구분해서 요청해야
하는 경우 사용방법이 나뉘게 된다.
또한 규모가 큰 대기업에서 제공하는 API의 경우 대부분
호출 방식이 requests를 사용한다. 이유는 요청방식이
명시되어 있고, 요청하는 데이터도 정리되어 있기 때문
아닐까 추측한다.
반응형
'Programming > Crawling' 카테고리의 다른 글
파이썬 urllib.request VS requests 차이점? (0) | 2021.12.18 |
---|---|
URL URI URN 이란? (0) | 2021.12.17 |
BeautifulSoup 제대로 활용하기 find() 부터 prettyfy()까지 xpath는 가능한걸까? (0) | 2021.12.11 |
CrawlSpider Rule 10분만에 이해하기 (0) | 2021.12.06 |
댓글