반응형
오늘은 파이썬 크롤링을 하면서 궁금해하셨을 request와 urllib.request의 차이에 대해 말해보겠습니다. 일단 필요한 모듈을 불러옵니다.
import requests
import urllib.request
import re
from bs4 import BeautifulSoup as bs
1. requests
데이터를 보낼 때 딕셔너리 형태로 보낸다
없는 페이지를 요청해도 에러를 띄우지 않는다
url = 'https://newsstand.naver.com/?list=&pcode=011'
req = requests.get(url)
print('url을 get으로 받아온 형태는: ', req)
print('#' * 20)
html = req.text
print('get으로 받아온 후의 문자열만 추출한 것은: ', html)
print('#' * 20)
soup = bs(html, 'html.parser')
print('Beautifulsoup의 html parser을 이용해 나온 형태는: ', soup)
# 없는 페이지 요청시
url = 'https://newsstand.naver.com/?list=&pcode=011/123'
req = requests.get(url)
html = req.text
soup = bs(html, 'html.parser')
soup
2. urllib.request
데이터를 보낼 때 인코딩하여 바이너리 형태로 보낸다
없는 페이지를 요청해도 에러를 띄운다
url = 'https://newsstand.naver.com/?list=&pcode=011'
req = urllib.request.Request(url)
print('url을 get으로 받아온 형태는: ', req)
html = urllib.request.urlopen(req).read()
print('get으로 받아온 후의 내용을 추출한 것은: ', html)
soup = bs(html, 'html.parser')
print('Beautifulsoup의 html parser을 이용해 나온 형태는: ', soup)
# 없는 페이지 요청시
url = 'https://newsstand.naver.com/?list=&pcode=011/123'
req = urllib.request.Request(url)
html = urllib.request.urlopen(req).read()
soup = bs(html, 'html.parser')
soup
requests와 urllib.request 간에 큰 차이가 없어보입니다만 대체로 requests를 많이 쓰는 것 같네요. 저도 requests.get() 방법이 HTTP method와 연관되어 있으니 직관적으로 이해하기 쉽다고 느꼈습니다.
참고로 requests.get()을 통해 받아온 객체 안에 무엇이 있는지 보기 위해선 아래 명령어를 사용해서 확인하면 됩니다.
dir(req)
# req.text
728x90
반응형
'문돌이 존버 > 코딩연습' 카테고리의 다른 글
파이썬 정규표현식(regexp) [], ^, |, 기호(+, ?, ., *) (0) | 2021.03.12 |
---|---|
파이썬 selenium을 이용한 댓글 크롤링, feat. 네이버 tv (0) | 2021.03.08 |
AI가 예측하는 미스트롯2 진선미는 누구? (0) | 2021.03.03 |
파이토치(pytorch) 텐서 기본 개념 이해하기, feat. Colab (0) | 2021.01.04 |
비전공자 문돌이가 설명해주는 Collaborative Filtering 개념, feat. Andrew Ng (0) | 2021.01.01 |