배경
코딩 테스트 언어로 파이썬을 선택한 후에 파이썬을 다루다보니 이 언어에 대한 강한 매력을 느꼈다.
이론만 줄줄 공부하는 것은 적성에 맞지 않으므로 뭐라도 만들어볼까? 하고 시작하려는 참이었다.
가벼운 웹 스크래퍼를 만들고자 하였고 구글에 검색하자마자 발견한 '노마드 코더'의 무료 강의!
덕분에 재미있게 배웠습니다. Thanks Nico!
강의 링크
https://nomadcoders.co/python-for-beginners/lobby
그래서 웹 스크래퍼가 뭐임? 기술 스택은? 준비물은?
말그대로 '웹'에서 '스크랩'을 한다. 신문 기사를 스크랩 했던 어린 시절이 잠깐 떠올랐음(...)
파이썬의 멋진 기능과 아름다운 BeautifulSoup 패키지를 활용하여 웹페이지에서 필요한 데이터만 스크랩한다.
일부 웹사이트에서 기존 강의만으로는 해결되지 않는 부분이 생겼는데 추가로 셀레니움을 잠깐 맛보면서 사용한다.
마지막으로 파이썬으로 작성된 마이크로 웹 프레임워크인 Flask를 사용하여 html 렌더링까지 맛본다.
준비물은 설레이는 마음, 간편하고 쾌적한 IDE인 Replit 그리고 잠깐의 시간이다.
이 프로젝트의 목표
1. 채용사이트에서 원하는 '키워드'를 포함한 채용 정보를 가져온다.
2. 키워드에 해당하는 채용 정보를 스크래핑 한다.
3. 사용자에게 채용 정보를 보여준다.
4. 해당 채용 정보를 파일로 내보내기 한다.
5. (Bonus) 강의에 나온 사이트 외 채용 사이트의 정보도 스크래핑해본다.
채용사이트는 아래 두 곳이었다.
웹사이트에 request 보내고 status code 받아서 확인하기
404..502.. 어디서 많이 본 숫자 아닌가?
그렇다 바로 에러페이지에서 마주하던 그 숫자들...
100번대 부터 500번대 까지 대략 이렇게 구분짓는다.
- Informational responses (100 – 199)
- Successful responses (200 – 299)
- Redirection messages (300 – 399)
- Client error responses (400 – 499)
- Server error responses (500 – 599)
출처 : https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
파이썬의 request 패키지를 사용하여 웹사이트에 request를 보내고 status code를 받아 범위에 따라 해당 웹사이트의 상태를 출력하고자 한다. 진짜 웹사이트에 보내도 좋지만 그러면 다양한 status code를 받을 수가 없었다. (당연함. 정상적인 사이트들임.)
그래서 노마드코더 댓글에서 알게된 웹사이트를 이용하였다.
예를 들어 https://httpstat.us/502 라고 하면 502 status code를 get할 수 있다
그렇게 작성한 코드는 다음과 같다.
#requests 패키지 다운
#get
from requests import get
websites = (
"google.com",
"https://httpstat.us/502",
"https://httpstat.us/404",
"https://httpstat.us/300",
"https://httpstat.us/101"
)
results = {}
for website in websites:
if not website.startswith("https://"):
website = f"https://{website}"
response = get(website) #get은 웹사이트의 status를 리턴
#http 상태코드 200: OK
if 500 <= response.status_code:
results[website] = "SERVER ERROR"
elif 400 <= response.status_code:
results[website] = "CLIENT ERROR"
elif 300 <= response.status_code:
results[website] = "REDIRECTION"
elif 200 <= response.status_code:
results[website] = "OK"
elif 100 <= response.status_code:
results[website] = "INFO RESPONSE"
print(results)
다음 편에서는 본격적으로 채용사이트에서 데이터를 추출해본다.
웹과의 연결고리가 바로 눈에 나타나니까 더 흥미로워졌다.
간단한 코드로 확실하고 빠른 결과가 나타나서 재미있었다.
실제로 너무 재미있어서 Flask 부분을 제외하고는 하루만에 완강을 했다.
'💻dev > 🐍Python' 카테고리의 다른 글
Python | 파이썬 웹 스크래퍼 만들기 - 04 (0) | 2023.03.09 |
---|---|
Python | 파이썬 웹 스크래퍼 만들기 - 03 (0) | 2023.03.05 |
Python | 파이썬 웹 스크래퍼 만들기 - 02 (0) | 2023.03.04 |
Python | 웹 크롤링이랑 웹 스크래퍼 뭔 차이임? (0) | 2023.03.04 |
Python | 파이썬 기초 문법 (0) | 2023.03.02 |