https://un-lazy-midnight.tistory.com/7
지난 포스팅에서 파이썬으로 웹스크래퍼를 만들었다.
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
'💻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 |