Programming/Python 웹 스크래퍼 만들기

Python Flask Arguments

2023. 1. 2. 21:00

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")

코드 실행 후 VS Code 콘솔창

main.py 코드를 작성하고 실행하여 다시 127.0.0.1:5000 (211.195.117.212:5000 )에 접속해서 python 검색.

URL 은 기존과 변함이 없지만 VS Code 콘솔창은 keyword 와 python 을 나타낸다.

request 사용 이후 웹 페이지 접속 후 VS Code 콘솔 창

이를 통해 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 변수를 추가해준다.

( 사용자가 검색했던 검색 단어를 웹 페이지 화면에 출력되도록 코드를 변경 )

python 검색 시 python ( keyword ) 가 화면에 보여짐

request 의 args 에서 keyword를 가져와서

( URL 의 ? 뒤에 있는 arguments 에서 keyword를 가져와서 )

그 keyword를 search.html 에 보내고 있고, search.html 은 UI 에 그 keyword를 사용하고 있다.

Flask 는 이 {{변수이름}} 를 실제 변수의 값으로 대체 → {{keyword}} 

= react 를 검색하면 react 가 화면에 출력된다.

react 검색 ( home.html )
react 검색 결과 ( search.html )

 

다음에 할거는 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
'Programming/Python 웹 스크래퍼 만들기' 카테고리의 다른 글
  • Flask 웹 사이트 Pico CSS 사용해서 꾸미기
  • Python Flask 로 HTML 에서 For 문 사용
  • Python Flask 간단 정리
  • Python Flask Form
Security Engineer
Security Engineer
IT 공부
Security Engineer
IT-log
Security Engineer
전체
오늘
어제
  • 분류 전체보기 (171)
    • Programming (39)
      • Python 웹 스크래퍼 만들기 (39)
    • IT 지식 (64)
      • IT 정보 (27)
      • CS 기초 (24)
      • 운영체제 (8)
      • IT 인프라 기초 (5)
    • 보안 (45)
      • 악성코드 분석 (10)
      • Bandit 워게임 (25)
      • 취미로 해킹 2 (6)
      • 환경 구축 (4)
    • 웹 해킹 (23)
      • 웹 기초 지식 (8)
      • SQL 기본 (2)
      • 웹 해킹 및 시큐어 코딩 기초 (13)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • webScrapper
  • Python
  • 웹 해킹
  • 리눅스
  • 컴퓨터
  • 웹 개발
  • overthewire
  • 웹
  • Web
  • flask
  • CSS
  • bandit
  • CS
  • Def
  • 취미로 해킹
  • IT 인프라
  • 운영체제
  • WarGame
  • 해킹
  • 시큐어 코딩
  • 취미로해킹
  • 워게임
  • 악성코드
  • 모의해킹
  • CS 기초
  • HTML
  • 악성코드 분석
  • Selenium
  • Beautifulsoup
  • 파이썬

최근 댓글

최근 글

hELLO · Designed By 정상우.
Security Engineer
Python Flask Arguments
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.