4. 요소들 리스트 화하기

이 단계에서는 전체 데이터를 jobs라는 리스트에 담는 것을 진행했었다

 

원래 title요소를 찾을 때 했었지만 20페이지 모두 매번 볼 수 없었기 때문에 니꼬쌤은 다른 함수로 옮겼다

 

def extract_jobs(last_page):  		#모든데이터 추출하는 함수
  jobs = []							#빈 리스트 jobs만들기
  for page in range(last_page): 	#마지막페이지까지 아래를 실행하는 반복문
    print(f"Scrapping Indeed: Page: {page}")	#되는지 안되는지 보기위한 출력문장
    result = requests.get(f"{URL}&start={page*Limit}")	
    s = BeautifulSoup(result.text, "html.parser")
    results = s.find_all("div", {"class": "jobsearch-SerpJobCard"})#모든 페이지 jobcard가져오기
    for result in results:
        job = extract_job(result)#제목,회사명,위치,링크추출하는 함수 실행
        jobs.append(job) #리스트에 넣기
  return jobs	#반환값

마지막으로 get_jobs함수를 만들어 나머지 세 개의 함수를 잘 정리했다

def get_jobs():
  last_page=get_last_pages()
  jobs=extract_jobs(last_page)
  return jobs

인디드는 끝!!

 

스택오버플로우는 이와 같이 반복 진행하므로 생략한다(물론 약간씩 다른 부분도 있어서 영상을 보는 것이 훌륭하다)

 

https://academy.nomadcoders.co/courses/

 

Academy

[풀스택] 인스타그램 클론 코딩 2.0 인스타그램 백엔드 + 프런트엔드 + 앱 + 서버 [중급] NodeJS, Prisma, GraphQL, Hooks, React Native % Complete

academy.nomadcoders.co

노마드 코더스 아카데미에서 파이썬으로 웹 스크래핑 영상이 있다

무료이다 (20년 3월 기준)

 

5.CSV로 파일 저장

CSV란? 콤마(Comma)로 데이터들을 구분한 파일이라는 뜻 엑셀이나 스프레드시트에 사용할 수 있다

 

인디드나 스택오버플로우와 마찬가지로 save.py를 만들어 코드를 작성한다

(main.py에는 오직 각 모듈에서 나오는 함수들만 있도록 깔끔하게)

 

먼저 save.py에서 파이썬에 내장된 CSV모듈을 import 해준다

(CSV모듈을 import 해주면 csv파일을 작성할 수 있다)

 

또한 각 파일로부터 반환된 jobs를 파이썬에 내장된 함수 open을 통해 생성해준다

 

이때 확장자는 csv , 모드는 w로 해준다

모드란? 파일을 열 때 어떤 형식으로 열지 정하는 것이다 w=write(쓰기), r=read(읽기), a=append(마지막에 추가하기)

 

CSV모듈 중 writer함수를 통해 제목, 회사명, 위치, 링크 순으로 각 위치에 리스트 형식으로 내용을 담아준다

 

우리가 반환한 인디드 값은 딕셔너리 형태이다

 

그렇게 된다면 스프레드시트에서 title: blablalba 이런 형태로 모든 것이 나오게 된다

 

이것을 없애기 위해 value함수를 통해 blablalba만 가져오자 

 

작성한 코드

 

import csv

def save_to_file(jobs):
  file = open("jobs.csv", mode="w")
  writer = csv.writer(file)
  writer.writerow(["title","company","location","link"])
  for job in jobs:
    writer.writerow(list(job.values()))
  return 

main.py에는 이런 식으로 인디드와 스택오버플로를 합쳐 저장했다

from indeed import get_last_pages
from so import get_jobs as get_so_jobs
from save import save_to_file

indeed_jobs = get_indeed_jobs()
so_jobs = get_so_jobs()
jobs = so_jobs + indeed_jobs

save_to_file(jobs)

 

이후 실행시켜보면

이런 형태로 jobs.csv에 저장이 된다 

6.스프레드시트에 불러오기

Repl.it에서 모든 파일을 압축 형식으로 다운로드하여 자신이 알 수 있는 공간에 풀어준다

풀었다면 구글의 온라인 스프레드시트에 들어가 job.csv를 import 해준다

밑의 그림처럼 나온다면 성공이다

감사합니다 니꼬쌤 김취 포테이토 냠냠

+ Recent posts