6.5 Arguments
이전 게시물에서는 Python Flask 의 Route를 이용하여 웹 페이지를 연결했던 작업을 간단히 정리했었다.
이제 URL 에 있는 keyword 값을 search function ( 함수 ) 안에서 사용해본다.
search function 안에서 사용하기 위해 request 를 import 한다. ( main.py 에서 import )
request → request(콘텐츠 요청) 에 대한 정보에 접근 할 수 있게 해준다.
request → 브라우저가 웹 사이트에 가서 콘텐츠를 요청하는 것을 의미한다.
request 에는 많은 정보가 있다. ( 요청하는 URL, IP주소, Cookies 유무 등등 )
위 사진의 URL 에서 보듯이 내가 필요한거는 ? 뒤에 keyword 부분이다.
< main.py > - args 는 argument(인자) 이다.
from flask import Flask, render_template, request
app = Flask("JobScrapper")
@app.route("/")
def home():
return render_template("home.html", name="james", age=20)
@app.route("/search")
def search():
print(request.args)
return render_template("search.html")
app.run("0.0.0.0")
main.py 코드를 작성하고 실행하여 다시 127.0.0.1:5000 (211.195.117.212:5000 )에 접속해서 python 검색.
URL 은 기존과 변함이 없지만 VS Code 콘솔창은 keyword 와 python 을 나타낸다.
이를 통해 request 의 args 에서 keyword 를 가져오면 된다는 것을 알 수 있다.
다시 main.py 코드를 아래와 같이 수정한다.
< main.py > - request (요청해서 가져온) argument "keyword"를 keyword 라는 변수에 저장.
from flask import Flask, render_template, request
app = Flask("JobScrapper")
@app.route("/")
def home():
return render_template("home.html", name="james", age=20)
@app.route("/search")
def search():
keyword = request.args.get("keyword")
return render_template("search.html", keyword = keyword )
app.run("0.0.0.0")
keyword = request.args.get("keyword")
→ 이제 keyword 라는 변수안에 request 해서 가져온 argument 인 "keyword" 를 저장했고,
keyword를 template 에 보낼 수 있다.
따라서 사용자가 무엇을 검색하는지 알려줄 수 있다.
search. html 코드로 가서 코드를 수정해본다.
< search.html > - Search Results for "{{keyword}}" 추가 후 코드 저장
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Job Scrapper</title>
</head>
<body>
<h1>Search Results for "{{keyword}}":</h1>
</body>
</html>
변수 사용시 - {{ }} 중괄호 2개 적고 안에 변수 이름(keyword) 넣는다
지금까지 흐름은 request 를 import 해서 request 사용 시 얻게되는 정보 keyword 를,
사용자가 keyword (python, react, java 등등) 를 검색하면 웹 페이지의 화면에 보이도록
main.py 와 search.html 에 keyword 변수를 추가해준다.
( 사용자가 검색했던 검색 단어를 웹 페이지 화면에 출력되도록 코드를 변경 )
request 의 args 에서 keyword를 가져와서
( URL 의 ? 뒤에 있는 arguments 에서 keyword를 가져와서 )
그 keyword를 search.html 에 보내고 있고, search.html 은 UI 에 그 keyword를 사용하고 있다.
Flask 는 이 {{변수이름}} 를 실제 변수의 값으로 대체 → {{keyword}}
= react 를 검색하면 react 가 화면에 출력된다.
다음에 할거는 keyword를 사용해서 기존에 만들었던 wwr 과 indeed 의 extractors 를 호출하는것이다.
그리고 찾은 구인정보를 화면에 출력되게 한다.
( 지금까지 했던 Flask 를 사용해서 웹 페이지를 연결하는 작업은 구인정보를 extractors 로 스크래핑 해서 Flask 를 사용해서 웹 페이지를 연결하여 , 웹 페이지에서도 구인정보를 확인할 수 있게 하는 것이다. )
< main.py > - wwr , indeed 웹 스크래퍼를 import 하고 jobs 변수에 스크랩 결과값을 저장.
from flask import Flask, render_template, request
from extractors.indeed import extract_indeedn_jobs
from extractors.wwr import extract_wwr_jobs
app = Flask("JobScrapper")
@app.route("/")
def home():
return render_template("home.html", name="james", age=20)
@app.route("/search")
def search():
keyword = request.args.get("keyword")
indeed = extract_indeedn_jobs(keyword)
wwr = extract_wwr_jobs(keyword)
jobs = indeed + wwr
return render_template("search.html", keyword=keyword, jobs=jobs )
app.run("0.0.0.0")
[ 정리 ]
extractors 폴더의 indeed.py 와 wwr.py ( 웹 스크래퍼 코드 ) 를 import 해서
indeed 와 wwr 이라는 변수에 각각 검색값 ( keyword )의 결과인 구인정보를 저장하고,
jobs 라는 변수에 indeed 와 wwr 변수를 합친 결과 ( 구인정보 )를 저장하여
jobs를 template 으로 보내 Flask 가 이를 웹 페이지로 출력하게 만든다.
keyword 로 2개의 function 을 호출했으며, 2개의 리스트( indeed, wwr )를 1개의 리스트( jobs )로 합쳤다.
그리고 합친 리스트를 search.html 로 보낸다, Flask 가 웹 페이지로 연결.
python 참고 강의
https://nomadcoders.co/python-for-beginners/lobby
'Programming > Python 웹 스크래퍼 만들기' 카테고리의 다른 글
Flask 웹 사이트 Pico CSS 사용해서 꾸미기 (0) | 2023.01.06 |
---|---|
Python Flask 로 HTML 에서 For 문 사용 (0) | 2023.01.05 |
Python Flask 간단 정리 (0) | 2022.12.30 |
Python Flask Form (0) | 2022.12.29 |
Python Flask Render Template (0) | 2022.12.28 |