https://un-lazy-midnight.tistory.com/7
Python | 파이썬 웹 스크래퍼 만들기 - 03
이번 포스팅에서는 추출한 데이터를 csv파일로 만들고 flask 맛보기로 웹서버에 웹 스크래퍼가 가져온 데이터를 뿌려볼 것이다. 파일로 내보내는 save_to_file 함수 생성 def save_to_file(file_name, jobs): #
un-lazy-midnight.tistory.com
지난 포스팅에서 파이썬으로 웹스크래퍼를 만들었다.
weworkremotely와 indeed에서 채용 정보를 불러와 파일로 내보내기가 가능하다.
다만 한가지 아쉬운 점은 replit 에서만 작동하는 코드였다. (노마드코더 강의 실습환경은 replit을 이용하고 있다.)
그래서 로컬(VS code)에서도 돌아갈 수 있도록 main.py와 indeed.py를 수정했다.
생각보다 많은 수정을 하지는 않았는데 Selenium도, Flask도 처음 써봐서 좀 헤맸다.
수정한 코드는 아래와 같다.
main.py
from flask import Flask, render_template, request, redirect, send_file
from extractors.indeed import extract_indeed_jobs
from extractors.wwr import extract_wwr_jobs
from file import save_to_file
#1
app = Flask(__name__)
db = {}
@app.route("/") #데코레이터가 함수를 데코레이팅 할 때만 함수를 실행
def home():
return render_template("home.html")
@app.route("/search")
def search():
keyword = request.args.get("keyword")
if keyword == None:
return redirect("/")
if keyword in db:
jobs = db[keyword]
else:
indeed = extract_indeed_jobs(keyword)
wwr = extract_wwr_jobs(keyword)
jobs = indeed + wwr
db[keyword] = jobs
return render_template("search.html", keyword=keyword, jobs = jobs)
@app.route("/export")
def export():
keyword = request.args.get("keyword")
if keyword == None:
return redirect("/")
if keyword not in db:
return redirect(f"/search?keyword={keyword}")
save_to_file(keyword, db[keyword])
return send_file(f"{keyword}.csv",as_attachment=True)
#2
if __name__ == '__main__':
app.run("127.0.0.1")
1. Flask(__name__)으로 수정
2.app.run("127.0.0.1")로 수정. 참고로 port도 지정 가능하다.
indeed.py
#1
driver = webdriver.Chrome()
driver.get(f"{base_url}?q={keyword}")
soup = BeautifulSoup(driver.page_source,"html.parser")
.
.
.
#2
options = webdriver.ChromeOptions()
#3
options.add_experimental_option('excludeSwitches', ['enable-logging'])
driver = webdriver.Chrome("./chromedriver.exe", options=options)
driver.get(final_url)
soup = BeautifulSoup(driver.page_source,"html.parser")
1. browser를 driver로 변경하였다. 좀 더 직관적인 명칭이 보기 좋은듯.
2. options 객체 정의를 바꿨다.
3. 크롬 웹 드라이버 '시스템에 부착된 장치가 작동하지 않습니다.' 메시지 오류 방지를 위해 추가한 코드.
해당 포스팅은 노마드 코더의 무료 강의 수강 후 개인 공부한 내용입니다.
강의 링크
https://nomadcoders.co/python-for-beginners/lobby
Python으로 웹 스크래퍼 만들기 – 노마드 코더 Nomad Coders
Python For Beginners
nomadcoders.co
'💻dev > 🐍Python' 카테고리의 다른 글
Python | 파이썬 출력 - 값 변환 (8진수, 16진수, 반올림, 비트시프트, 유니코드) (0) | 2023.03.26 |
---|---|
Python | 함수와 메서드의 차이, 더이상 헷갈리지 말자! (0) | 2023.03.17 |
Python | 파이썬 웹 스크래퍼 만들기 - 03 (0) | 2023.03.05 |
Python | 파이썬 웹 스크래퍼 만들기 - 02 (0) | 2023.03.04 |
Python | 웹 크롤링이랑 웹 스크래퍼 뭔 차이임? (0) | 2023.03.04 |