노마드 코더 Python으로 웹 스크래퍼 만들기
https://nomadcoders.co/python-for-beginners
indeed.py로 가서 get_jobs
라는 새로운 함수를 만들어 준다.
딱히 인자는 필요 없다.
def get_jobs():
수행할 문장은 main.py에서 가져온다.
아래 두 줄 복사
get_jobs 함수에 붙여넣기
indeed_jobs 변수이름을 jobs로 수정
그리고 jobs를 반환하는 걸로 한다.
변수와 함수 이름에 들어있는 indeed를 다 지워준다.
indeed.py에 있으니까 굳이 이름에 indeed가 들어가지 않아도 된다.
extract_indeed_pages
→ get_last_page
get_jobs 함수에서만 수정하지 말고 모두 수정해주기
extract_indeed_jobs
→ get_jobs
get_jobs 함수에서만 수정하지 말고 모두 수정해주기
last_indeed_page
→ last_page
main.py로 가서 새로 만든 get_jobs
함수를 import 해 준다.
두 개를 합친 게 get_jobs
함수니까 지우고
get_jobs
함수를 입력한다.
as
를 써서 함수 이름을 get_indeed_jobs
로 바꿔서 import 해 준다.
indeed_jobs = get_indeed_jobs()
입력
잘 동작하는지 확인하기 위해 실행해본다.
오류가 났다.
함수 이름이 중복되어 있었다.
하나를 extract_jobs
로 바꿔준다.
함수이름을 바꿔주고 다시 실행해보니 오류가 안 난다.
이렇게 함수를 여러 개로 쪼개서 indeed.py 안에 모아두면
main.py에 코드를 길게 써주지 않아도 된다.
이제 stackoverflow 페이지에서 정보를 추출할 차례이다.
https://stackoverflow.com/jobs?q=python
so.py 라는 새로운 파일을 만든다.
so.py에 처음 작성했던 코드를 복붙한다.
URL
을 stackoverflow 페이지로 바꿔준다.
stackoverflow 사이트로 가서
페이지를 이동할 때 주소창이 어떻게 바뀌는지 확인한다.
2페이지로 이동해본다. 주소창을 보면 &pg=2 라고 바뀐다.
URL
에 입력해준다.
LIMIT
은 사용하지 않으므로 지워준다.
get jobs
라는 함수를 새로 만든다.
indeed.py에서 했던 것을 그대로 참고한다.
임시로 리스트 하나를 반환해주도록 한다.
main.py로 가서 so.py에서 만든 get jobs
함수를 import 해 준다.
맨 밑에 있는 print도 지워줬다.
stackoverflow만 테스트 해 보기 위해 indeed_jobs
를 임시로 주석 처리 해 준다.
get_jobs
함수에 빨간줄이 떠 있다.
첫 번째, 페이지를 가져온다.
두 번째, request를 만든다.
세 번째, job을 추출한다.
stackoverflow 웹사이트 하단에 있는 페이지 넘버를 클릭해서 inspect 실행
s-pagination
indeed와 마찬가지로 페이지 넘버 마지막에 next
가 있다
get_last_page
함수에 request를 만들어 준다.
result = requests.get(URL)
그리고 soup을 만들어 준다.
soup = BeautifulSoup(result.text, "html.parser")
잘 동작하는지 확인하기 위해 soup를 출력해 본다.
잘 동작한다.
이제 s-pagination
을 가지고 온다.
pagination = soup.find("div", {"class": "s-pagination"})
출력해 본다.
print(pagination)
잘 동작한다.
이제 s-pagination
안에 있는 모든 anchor를 가져온다.
변수 이름을 pagination
에서 pages
로 바꿔준다.
s-pagination
안에 있는 모든 anchor 가져오기
실행해본다.
잘 동작한다.