본문 바로가기

Back-end/Python Scrapper11

Flask로 웹스크래퍼 만들기 - 전체 코드 * 복붙 하시고 코드정리 하시길 바랍니다. 1. scrapper.py import requests from bs4 import BeautifulSoup LIMIT = 50 def get_last_pages(url): result = requests.get(url) soup = BeautifulSoup(result.text, "html.parser") pagination = soup.find("div", {"class": "pagination"}) links = pagination.find_all('a') pages = [] for link in links[:-1]: pages.append(int(link.string)) max_page = pages[-1] return max_page def extrac.. 2020. 8. 12.
Flask로 웹스크래퍼 만들기 - 4 1. 검색결과를 CSV파일로 다운받는 기능 (1) CSV파일로 다운받을 수 있도록 export 함수를 만들어줍니다. 아래 사진을 참고해주세요. (2) 다운로드를 받을 수 있는 링크 또는 버튼을 report.html에 만들어줍니다. (3) 이제 CSV로 export하는 기능을 만듭니다. 이전 포스팅에 보면 save.py라는 이름으로 이미 만들어놓은 코드가 있습니다. 그걸 다시 사용해보겠습니다. - 저는 exporter.py라는 파일을 만들어 기존의 save.py에 있던 코드들을 복사하였습니다. 여기서 중요한 부분은 save_to_file함수를 사용하기 위해서는 jobs라는 매개변수가 필요하다는 것입니다. main으로 가서 작업해봅시다. (4) 사용할 새로운 함수를 import를 해주고, export함수에서.. 2020. 8. 10.
Flask로 웹스크래퍼 만들기 - 3 1. 통합구현 - 저번 포스팅에서 word로 검색단어를 받아오는 법을 알았으니 이 기능과 이전에 만들어 놓은 스크래퍼를 연결하겠습니다. (1)먼저 스크래퍼 코드를 복사해서 파일을 따로 만들어줍니다. 저는 indeed.py 코드만 사용했습니다. - 위의 사진처럼 scrapper파일을 생성해서 indeed 파일의 코드를 복붙했습니다. (2) report함수에서 받아온 word변수의 값을 scrapper에서 import해온 get_jobs()함수의 매개변수로 사용합니다. - 여기서, 다른 함수도 많은데 왜 하필 get_jobs()함수와 word변수를 연결하는걸까요? - 그 이유는, report페이지가 검색결과를 출력하는 부분이기 때문입니다. 검색단어를 받아오면서 동시에 검색결과를 출력해야 하는 역할을 repo.. 2020. 8. 9.
Flask로 웹스크래퍼 만들기 - 2 1. Query Argument - 구글에 들어가서 어떤 것을 검색하면 페이지가 나오고 알 수 없는 의미의 URL이 나옵니다. 예를 들어, something을 구글에서 검색하면 아래와 같은 URL을 얻게 되죠. - 이 URL을 분석해보면 /search 라는 경로에 들어갔고 제가 검색한 단어(q=something), 제가 크롬을 사용한다는 것을 알 수 있습니다(aqs=chrome). 이 이외의 다른 부분의 의미는 모르지만 이와 같이 제가 검색한 단어가 URL에 표시된 것을 볼 수 있습니다. 이런 것을 Query Argument라고 합니다. 저의 검색어가 매개변수로써 URL에 작동하는 것이죠. 그렇다면 간단하게 만들어 보겠습니다. - form을 사용해서 /report라는 경로를 설정하고 get방식을 이용하였.. 2020. 8. 9.
Flask로 웹스크래퍼 만들기 - 1 - 이번 포스팅에서는 앞서 만든 웹스크래퍼를 Flask를 이용하여 웹으로 구현하는 방법을 포스팅합니다. 1. Flask란 무엇인가? - Flask는 파이썬을 이용해 웹사이트를 만들 수 있게 도와주는 micro-framework입니다. 기존의 Java의 Spring이나 Python의 Django와는 다르게 환경설정에 특별히 set-up해줄게 없어서 사용하기 편한 Framework입니다. 2. Flask 다운받기 및 설치 - 저는 repl.it이라는 사이트에서 파이썬을 이용하고 있기 때문에 설치하는데에 어려움이 없습니다. 혹시 로컬로 작업하시는 분들은 먼저 Flask 사용을 위해 환경구축을 해주세요. 3. 시작하기 (1) Flask 설치를 마치고 import해준 다음에 Flask의 이름을 설정합니다. app.. 2020. 8. 9.
파이썬으로 웹스크래퍼 만들기 - 6 1. CSV 파일 만들기 - 구직사이트에서 받아온 데이터를 CSV(엑셀)파일의 형식으로 만들어보겠습니다. - indeed에서 받아온 자료부터 만들어보겠습니다. (1) save.py - open이라는 함수는 파일을 읽거나 해당 파일이 존재하지 않을 시 생성하는 함수입니다. 이 함수를 이용해 파일을 생성합니다. - 코드작성의 편의를 위해 잠시동안 스크래퍼 기능들을 주석처리합니다. save.py에 함수를 만들어준 뒤 main에서 실행을 하게 되면 job.csv라는 파일을 생성합니다. (2) 행(column) 만들기 - indeed에서 받아온 정보는 title, company, location, link 이렇게 4가지 입니다. 이 4가지 종류의 데이터가 엑셀파일에서 행(column)의 역할을 하게 됩니다. 아래.. 2020. 8. 6.
파이썬으로 웹스크래퍼 만들기 - 5 1. StackOverflow를 이용한 크롤링 예제 - 이번에는 StackOverflow를 이용해 스크래퍼를 만들어봅시다. 이전 포스팅에서와 같은 방식으로 직접 만들어보세요. - 아래에 저의 코드를 함께 올려놓겠습니다. 1. indeed.py import requests from bs4 import BeautifulSoup LIMIT = 50 INDEED_URL = f"https://kr.indeed.com/jobs?q=java&l=%EC%84%9C%EC%9A%B8%ED%8A%B9%EB%B3%84%EC%8B%9C&jt=new_grad&limit={LIMIT}&radius=25" #검색결과 마지막 페이지번호 찾는 function def get_last_pages(): result = requests.get.. 2020. 8. 5.
파이썬으로 웹스크래퍼 만들기 - 4 1. 회사 이름 추출하기 - 앞선 포스팅에서 설명했던 동일한 방식으로 HTML의 구조를 분석하여 이번에는 회사의 이름을 추출해 보자. - HTML을 분석해보면 이전에 이미 알고있는 div태그에 company라는 span에 String으로 회사 이름이 들어가 있는 것을 볼 수 있다. 하지만 가끔 몇몇 회사들은 a태그로 회사이름에 링크를 걸어놓는 경우가 있다. 우리는 이 두가지 경우 모두를 생각하여 코드를 만들어 보자. (if문을 사용한다.) - 결과는 아래와 같이 잘 출력된다. - 이 결과의 문제점은 결과간의 공백이 존재한다는 것이다. 이 공백을 없애주기 위해 우리는 strip() 함수를 사용할 수 있다. - 결과는 아래와 같이 공백없이 깔끔하게 나오는 것을 확인할 수 있다. 2. 코드정리 - 지금까지 만.. 2020. 8. 4.
파이썬으로 웹스크래퍼 만들기 - 3 1. pages에서 String만 추출하기 (1) 지난 시간에 우리는 배열에 span부분을 저장했습니다. 그렇다면 span에 있는 String만 찾아서 저장해봅시다. (2) 하지만 우리가 진행했던 위의 코드는 효율성이 좋지 않은 코드입니다. a태그인 anchor를 찾고 그 안의 span을 찾고 span에 있는 string을 추출해 내는 방식이기 때문입니다. HTML의 구조를 잘 안다면 이런 과정을 생략하고 한번에 string을 찾을 수 있다는 것을 알게됩니다. anchor에서 String을 바로 찾아내는 방법이죠. (3) 어떻게 이렇게 쉽게 찾을 수 있을까요? 크롬의 개발자 도구를 이용하여 HTML의 구조를 파악해 봅시다. (4) 위의 사진에서 알 수 있듯이 a태그 아래에 존재하는 String은 페이지 .. 2020. 8. 3.