basic/python
python 04 [실습] 크롤링
못지(Motji)
2021. 8. 23. 22:43
❕ 기상청 RSS 검색해서 정보 가져오기
#0 기상청 RSS 검색하여 url 가져오기
'''
http://www.kma.go.kr/weather/forecast/mid-term-rss3.jsp?stnId=108 전국
http://www.kma.go.kr/weather/forecast/mid-term-rss3.jsp?stnId=109 서울 경기
파라미터 stnId : 지역파라미터
'''
#1 필요 라이브러리
import urllib.request as request
import urllib.parse
api = "http://www.kma.go.kr/weather/forecast/mid-term-rss3.jsp"
value = {"stnId":"109"}
param = urllib.parse.urlencode(value)
url = api + "?" + param
print("url:", url)
#2 정보 요청
data = request.urlopen(url).read()
txt = data.decode("utf-8")
print(txt)
# xml 파일이기 때문에 파싱을 해줘서 원하는 데이터를 찾기 쉽게 해줘야 한다.
# 데이터 수집만 진행
❕ requests, BeautifulSoup 사용하여 크롤링
# 라이브러리 임포트
import requests
from bs4 import BeautifulSoup
url = "https://www.naver.com"
res = requests.get(url)
print(res)
print(res.status_code)
print(res.headers)
print(res.cookies)
print(list(res.cookies))
#print(res.text)
print(res.content)
print(res.encoding)
# .get()
# 1. 쿼리스트링 만들어 요청 (*추천)
res = requests.get(url, params={"keys":"value1","key2":"value2"})
print(res.url)
# 2. 쿼리스트링 데이터 만들어 요청
url = "http://www.naver.com?key10=value10&key20=value20"
res = requests.get(url)
print(res.url)
# .post()
url = "http://www.naver.com"
requests.post(url,data={"keys":"value1","key2":"value2"})
print(res.url)
print(res.headers)
# data = json 형태로 보내기
import json
res = requests.post(url, data=json.dumps({"keys":"value1","key2":"value2"}))
print(res.status_code)
'''
request 에러
HTTPError : 경로에 http 빼먹었을때
ConnectionError : 서버, 사이트와 연결이 안된다, 연결문제
SSLError : 인증서오류
Timeout : 일정시간동안 서버가 응답을 안한다, 요청들어간 시간이 끝남
ConnectTimeout : 커넥션이 안될때
URLRequired : 유효한 url이 필요할때, url이 제대로 안들어감 또는 주소가 없거나 이상함
TooManyRedirects : 요청이 너무 많을때, 새로고침을 많이해도 이런에러 발생
'''
try:
url = "naver.com"
res = requests.get(url)
print(res.status_code)
except requests.exceptions.HTTPError:
print("http error")
except requests.exceptions.Timeout:
print("timeout")
except requests.exceptions.MissingSchema:
print("http 미작성")