Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- spring boot
- 연산자메서드
- 프로그래머스
- 파이썬 #python #예외처리 #exception
- 파이썬 #python #Comprehension
- jsonb
- 파이썬 #python #class #클래스 #상속
- docker
- 배포
- 민감 정보 관리
- aws
- 파이썬 #python #함수 #function
- 파이썬 #python #os #os.path #glob
- 파이썬 #python #enumerate
- 파이썬 #python #lambda #람다
- 약수 수하기
- redis
- aw3
- 파이썬 #python #docstring
- 파이썬 #python #모듈 #module #import #random #time #calendar #sys
- 파이썬 #python #전역변수 #지역변수 #eval
- 사용자정의예외
- 파이썬 #python #file #i/o #input #output
- 파이썬 #python #filter #map #reduce
- 파이썬 #python #가변매개변수 #키워드가변매개변수 #args #kwargs
- EC2
- 파이썬 #python #지역함수
- 파이썬기본문법 #파이썬 #python
- PostgreSQL
- Git
Archives
- Today
- Total
Yeonnnnny
[Web Scrapping] requests 모듈 본문
■ 특정 사이트 접속
- requests 객체를 import한 후 get() 함수를 이용해 지정된 사이트에 접속함
import requests
response = requests.get(url, params, **kwargs)
- url : 접속할 url의 정보
- params : 해당 url의 파라미터 문자열 정보 입력(dictionary 객체로 전달)
- **kwargs: 그 외 매개변수
○ verify=False : SSL인증서를 사용하는 경우
○ auth = ('id','pass') : 인증이 필요한 경우
○ headers = ('Content-Type' : 'application/json; charset=utf-8')
○ cookies = {'sessionKey':'sessionValue'}
○ timeout = 3
■ requests 모듈을 이용한 사이트 접속 후 페이지 정보 가져오기
요청의 종류
1. GET : 정보를 가져오기 위해 요청
2. POST : 새로운 정보를 보내기 위해 사용하는 요청
3. PUT : 수정할 정보를 보내기 위해 요청
4. DELETE : 정보를 삭제하기 위한 요청
import requests
print(response.status_code) # 200 : 정상작동
print(response.text)
○ 데이터 파싱
requests.get(url).text (text형태로 추출)
requests.get(url).content (byte형태로 추출)
○ 상태 코드 확인
response.statuse_code (상태코드 확인, 성공시 : 200 )
■ 응답코드
- 지정된 사이트에 접속한 후 status_code 속성을 이용하면 응답코드 값을 알 수 있음
- 응답코드 값이 200이면 정상접속, 다른 값이면 오류이거나 권한이 없음을 나타내므로 상태에 따른 다른 처리 필요
■ parameter를 이용한 검색결과 조회
- 요청을 보낼 때 파라미터를 이용해 그 결과를 확인할 수 있음
- 파라미터가 여러 개일 경우는 다음과 같이 dictionary를 여러 개 주어 처리 가능
url = 'http://comic.naver.com/webtoon/detail.nhn'
params ={'titleId':703846,'no':144,'weekday':'tue'}
□ 활용
# 로봇이 아님을 나타내기 위해서 user-agent라는 값을 header에 넣어서 보냄
# 직접적인 url 주소로 요청시, 웹사이트에서 웹크롤링을 통해서 접근한 것을 갑지하고 접속을 차단하게 됨
# user-agent 헤더값을 포함하여 요청하면 웹브라우저를 통해 요청하는 것으로 인식되어 해결
# 웹브라우저 실행 ->F12를 눌러 개발자 모드->console->navigator.userAgent 입력
# "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" 값 가져옴
import requests
params = {'q':'python'} #구글은 q, 네이버는 query
headers = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'}
response = requests.get(url,params=params,headers=headers)
response.raise_for_status() # 200이 아니면 오류를 내고 멈춤
html = response.text
with open('search_result.ht,','w',encoding='utf-8') as f:
f.write(html)
print('저장완료')
# 네이버 실시간 인기 검색어 추출
html = response.text
temp = html.split('<em class="num">1</em>')[1]
temp = temp.split('<span class="title">')[1]
temp= temp.split('</span>')[0]
print(temp)
'Data Analysis' 카테고리의 다른 글
정규 표현식 part2 (1) | 2023.11.01 |
---|---|
정규 표현식 part1 (0) | 2023.11.01 |
HTTP 요청/응답 (0) | 2023.11.01 |
Dom (Document Object Model) (0) | 2023.10.31 |
Web 구성요소 - css (1) | 2023.10.31 |