기본 콘텐츠로 건너뛰기

파이썬 웹스크래핑with nomad coders[10]끝!!!

파이썬 웹스크래핑with nomad coders[10]끝!!!

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/

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

무료이다 (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 해준다

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

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

from http://jejehoon.tistory.com/15 by ccl(A) rewrite - 2020-03-11 03:54:05

댓글

이 블로그의 인기 게시물

[실습]NodeJS + EXPRESS + MySQL 을 이용한 게시판 만들기 3(MVC)

[실습]NodeJS + EXPRESS + MySQL 을 이용한 게시판 만들기 3(MVC) 실습2 이후 나머지 부분들 까지 라우터 모두 작성함 app/routes/posts.js app/controllers/postsController.js 현재까지의 소스 app/models/postsModel.js 현재까지의 소스 from http://thisblogbusy.tistory.com/139 by ccl(A) rewrite - 2020-03-15 09:20:05

AWS instance로 Nodejs 구현하기

AWS instance로 Nodejs 구현하기 서버와 데이터베이스 관리 차원에서 효율적으로 관리하기 위해선 로컬보다는 서버를 호스팅해서 하는 것이 좋다. 우리는 Nodejs를 구동하기 위해 AWS에서 인스턴스를 할당받을 계획이다. 인스턴스의 pem키를 발급받아 nodejs와 npm까지는 설치를 완료한 상태이다. $ sudo npm install -g express 다음의 명령어를 입력하면 글로벌 옵션으로 어느 path에서든 express를 사용할 수 있게 설치한다. 다음과 같이 실행이 된다면 성공이다. 이후 Express generator를 설치한다. $ sudo npm install -g express-generator@4 버전은 4.x이며 이 역시 글로벌 옵션으로 설치해 준다. 이제 Node monitoring을 위해 nodemon을 설치해 준다. $ sudo npm install -g nodemon 모든 설치가 끝났다. 이제 nodejs를 실행시킬 프로젝트용 directory를 만든다. 이렇게 만들어 주고 express를 실행시키면 된다. $ express -e 다음과 같은 결과가 나오면 된다. 이제 node package를 설치하는 명령어를 입력하자. $ sudo npm install 이제 vi를 통해 포트번호를 정의해보자. app.set의 마지막에 한줄을 추가하면 된다. app.set('port', process.env.PORT || 9000); 이로써 우리는 9000번 포트를 사용하게 되었다. 또한 마지막줄에 서버를 생성하기 위한 코드를 작성하자. module.exports = app; var server = app.listen(app.get('port'), function() { console.log('Express server listening on port ' + server.address().port); }); 이

[Full stack developer] 풀스택 개발자는 다 아는 사람? NO

[Full stack developer] 풀스택 개발자는 다 아는 사람? NO Full stack devloper 연봉과 수요가 높다는 풀스택 개발자란? 개발에대한 모든걸 알아야 될까? 'No'라고 한다 자바스크립트 책을 쓰고 코딩 커뮤니티나 학교에 무료로 나눠주는 외국 자바스크립트 선생님은 풀 스택의 의미는 모든 것을 말하는게 아니라 스택만 알면 된다고 한다. 이 스택은 MERN MERN (MongoDB, ExpressJS, ReactJS, NodeJS) 을 알면 풀 스택이라고 한다. I still get asked what is Full Stack developer? Do you need to know everything? Full...means everything right? No...you just need to know a stack. And it should probably be MERN. — JavaScript Teacher (@js_tut) March 19, 2020 참고 https://www.educative.io/edpresso/what-is-mern-stack?https://www.educative.io/courses/grokking-the-object-oriented-design-interview?aid=5082902844932096&utm;_source=google&utm;_medium=cpc&utm;_campaign=blog-dynamic&gclid;=CjwKCAjwsMzzBRACEiwAx4lLGykB0OJ1XYoz1vq-eARUzUKrN7ievxnrIJMA5hr-Ox4D1g9wlXfjrxoCPfQQAvD_BwE from http://forgottenknowledge.tistory.com/15 by ccl(A) rewrite - 2020-03-20 13:20:07