1. 웹페이지 긁어오기
# requests 모듈의 get을 이용해 웹페이지 긁어오기.
import requests
url = "https://www.daum.net"
response = requests.get(url) # 이제 response에는 다음이 들어가있다.
response.status_code # 다음의 상태 코드를 보여줘.
# requests 모듈의 post를 이용해 웹페이지 긁어오기.
import requests
url = "https://www.daum.net"
response = requests.post(url) # 이제 response에는 다음이 들어가있다.
response.status_code # 다음의 상태 코드를 보여줘.
request.get과 request.post로 긁어올 수 있다. 둘의 기능 차이는 없는 것 같다. 둘의 차이는 파라미터로 값을 줄 때 get은 params로, post는 data로 받는다는 것 뿐이다. (쿠팡은 이상하게 get만 되고, post는 안 된다.)
get은 파라미터로 페이지 정보를 요청한다. / post는 body 정보로 페이지 정보를 요청한다. 둘의 자세한 차이는 나중에 배우면 추가하겠습니다.
파라미터가 필요하다면 이렇게 줄 수 있다.
import requests
parameterDic = {"Param1":"Value1", "Param2":"Value2"}
url = "https://www.daum.net"
response = requests.get(url, params = parameterDic) # get은 옵션을 params로 준다.
response.status_code
import requests
parameterDic = {"Param1":"Value1", "Param2":"Value2"}
url = "https://www.daum.net"
response = requests.post(url, data = parameterDic) # post는 옵션을 data로 준다.
response.status_code
https(SSL) 페이지 : requests.get(url, verify=False)을 해주면 된다는데 오히려 이걸 입력하면 안 되는 사이트가 많은 것 같습니다.
로그인이 필요할 때는 : request.get(url, auth("ID", "Password")) 를 통해 가능합니다.
2. 웹페이지 예쁘게 담아내기
'www.daum.net'을 requests를 이용해 get하고, BeautifulSoup를 이용해 예쁘게 담아내는 것까지 한 번에 진행해보겠습니다.
import requests, bs4
# Step 1. requests.get을 이용해 HTML 페이지 긁어오기.
url = "https://www.daum.net"
response = requests.get(url)
# Step 2. HTML을 text로 변환하고, 다시 BeautifulSoup로 예쁘게 담기.
daum_text = response.text
daum_bs = bs4.BeautifulSoup(daum_text)
daum_bs # 디버깅용.
결과 :
<!DOCTYPE html>
<html class="" lang="ko">
<head>
<meta charset="utf-8"/>
<title>Daum</title>
<meta content="https://www.daum.net/" property="og:url"/>
<meta content="website" property="og:type"/>
<meta content="Daum" property="og:title"/>
<meta content="//i1.daumcdn.net/svc/image/U03/common_icon/5587C4E4012FCD0001" property="og:image"/>
<meta content="나의 관심 콘텐츠를 가장 즐겁게 볼 수 있는 Daum" property="og:description"/>
<meta content="name=Daum;action-uri=https://www.daum.net/;icon-uri=/favicon.ico" name="msapplication-task"/>
<meta content="name=미디어다음;action-uri=https://news.daum.net/;icon-uri=/media_favicon.ico" name="msapplication-task"/>
<meta content="name=메일;action-uri=http://mail.daum.net;icon-uri=/mail_favicon.ico" name="msapplication-task"/>
<meta content="origin" name="referrer"/>
<link href="//search.daum.net/OpenSearch.xml" rel="search" title="다음" type="application/opensearchdescription+xml"/>
<style type="text/css">
@charset "utf-8";
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,textarea,p,blockquote,th,td,input,select,button{margin:0;padding:0}
fieldset,img{border:0 none}
dl,ul,ol,menu,li{list-style:none}
blockquote, q{quotes: none}
blockquote:before, blockquote:after,q:before, q:after{content:'';content:none}
input,select,textarea,button{border-radius:0;vertical-align:middle}
input::-ms-clear{display:none}
button{border:0 none;background-color:transparent;cursor:pointer}
body{background:#fff;direction:ltr;-webkit-text-size-adjust:none}
body,th,td,input,select,textarea,button{font-size:13px;line-height:1.5;font-family:AppleSDGothicNeo-Regular,'Malgun Gothic','맑은 고딕',dotum,'돋움',sans-serif;color:#222;letter-spacing:-1px}
...
<script src="//t1.daumcdn.net/daumtop_deco/scripts/202004211546/top.js" type="text/javascript"></script>
<script src="//t1.daumcdn.net/daumtop_deco/scripts/201905281455/daum_pctop.tm.min.js" type="text/javascript"></script>
<script async="" src="//t1.daumcdn.net/b2/ssp/awsa.js?ver=20190920" type="text/javascript"></script>
</body>
</html>
단계별로 분해해서 살펴보면 이렇습니다.
Step 1. requests.get을 이용해 HTML 페이지 긁어오기.
import requests, bs4
# Step 1. requests.get을 이용해 HTML 페이지 긁어오기.
url = "https://www.daum.net"
response = requests.get(url)
response # 디버깅용.
결과 :
<Response [200]>
Step 2. HTML을 text로 변환하고, 다시 BeautifulSoup로 예쁘게 담기.
# Step 2. HTML을 text로 변환하고, 다시 BeautifulSoup로 예쁘게 담기.
daum_text = response.text
daum_bs = bs4.BeautifulSoup(daum_text)
만약 BeautifulSoup를 사용하지 않고 .text만 했을 경우에는 이렇게 나오게됩니다.
'개발자 > Python' 카테고리의 다른 글
Python (파이썬) Beautiful Soup 사용법 (0) | 2020.04.13 |
---|---|
Jupyter Lab Python (파이썬) 경로 이동시키기 (0) | 2020.04.13 |
Python (파이썬) 웹 크롤링 에러 SSLCertVerificationError (0) | 2020.04.11 |
Python (파이썬) Mac, Linux에서 psycopg2 설치 에러 해결하기 (최종) (0) | 2020.04.10 |
과거 주차 계산하기 (preWeek(201713,10) 을 하면 201703 출력) (0) | 2020.04.02 |