Python으로 웹 스크래퍼 만들기 ~6.10

fever·2023년 10월 21일
post-thumbnail

📔 Flask 사용하기 2

📌 URL의 keyword 값 사용

  • 먼저 지난 코드로 만든 url를 확인해보면 키워드 뒤에 파이썬으로 전달한 걸 볼 수 있다. 해당 파이썬 키워드를 기존에 만들어둔 indeed와 wwr 함수에 전달해 자료를 얻어보자!

  1. request를 추가로 임포트하고, serach 함수에 keyword= 값을 받는 request.args.get을 사용한다.
  2. 리턴에서 keyword=keyword로 html에 keyword의 값을 전달한다.
  3. 이후 search html에 {{}}를 사용하여 keyword를 전달하면 이렇게 메인에 내가 입력한 키워드 값이 뜬다.

📌 함수와 URL keyword 연결

  1. 먼저 임포트로 만들어둔 indeed와 wwr를 불러온다.
  2. 기존 방식과 동일하게 indeed, wwr변수를 만들어서 실행함수에 키워드를 전달한다.
  3. 리스트 형식의 indeed와 wwr를 합쳐 jobs 변수에 넣는다.
  4. 이후 search.html에 jobs의 값을 전달한다.

  1. html의 형식을 수정해준다.
  • {%%}: 템플릿 문법으로 {% endfor %}로 꼭 종료해야 함
  • {{}}: 변수의 값
  1. 이후 확인하면 우측처럼 못생기게 출력된다.

📌 Pico를 사용하여 페이지 꾸미기

  • Pico란? CSS 프레임워크는 웹 디자인을 간소화하고 스타일을 적용하기 위한 미리 정의된 클래스 및 스타일 규칙의 모음을 제공한다.
    https://picocss.com/

  1. head에 pico에서 제공한 link를 넣어준다.
  2. 이후 pico에서 제공한 main을 사용하면 이렇게 힘쓰지 않고 예쁜 화면을 만나기 쌉가능하다.

  1. search 페이지 또한 똑같다.
  • head에 link를 넣는다.
  • main으로 감싸서 중앙 정렬 시킨다.
  • pico에서 제공한 table을 따라서 안에 내용들을 넣어준다.
  • 구분을 위해 role="grid" 또한 테이블에 추가해준다.
  1. 한결 보기 좋은 테이블 완성!

📌 cache를 사용하여 속도 향상 시키기

  • 현재 코드는 사용자가 들어올 때마다 search()를 실행해서 속도가 저하되는 문제가 있다. 캐시를 사용해서 해당 문제를 해결해보자.

  1. db={}를 생성하여 db를 담아둘 변수를 만든다.
  2. if문을 활용하여 키워드가 db에 있다면 db를 실행하고 없다면 기존 jobs를 실행하고 db에 저장시킨다.
  3. 이후 실행해서 확인해보면 처음 검색 때만 로딩이 걸리고, 이후 같은 걸 검색하면 속도가 현저히 줄어드는 걸 확인할 수 있다.

❗️하지만 해당 방법은 서버가 가동 중일 때만 가능하고, 서버를 중지하고 다시 시작하면 캐시가 사라지기 때문에... 다시 서버를 실행하면 똑같이 로딩이 걸린다...🥺

📌 Url에 redirect 추가하기

  • 사용자가 URL 잘못된 경로로 들어가면 홈으로 돌아가게 수정하기
    ex. 키워드를 입력하지 않았거나, url를 임의적으로 변경할 때

  1. import에 redirect를 추가한다.
  2. if 문을 활용하여 search에 검색어를 입력하지 않거나, search로 url를 변경해서 들어갈 경우 홈("/")으로 리턴시킨다.

📌 파일 저장하기

  1. app.route로 export 페이지를 만든다.
  2. search와 같이 keyword를 받을 수 있게 request를 사용한다.
  3. search와 같이 keyword가 없거나 직접 검색으로 들어올 경우 홈으로 리턴시킨다.
  4. if문을 추가하여 db가 없다면 search로 넘어가게 지정한다. (키워드로 search를 이용)
  5. 만들어둔 save_to_file를 import 시킨다.
  6. save_to_file에 (파일 이름, 리스트)를 보낸다. 파일이름은 키워드로 설정하고, 리스트는 db에 있는 걸 반환한다.
  7. 이후 save_to_file에 있는 keyword.csv를 export 하기 위해 send_file를 임포트한다.
  8. return으로 send_file를 추가하고 기존에 정해둔 파일 명과, as_attachment=True로 웹 다운로드를 실행시킨다.

  1. search.html에서 export 링크를 만들고, target="_blank"로 새창에서 추가해준다.

  1. 이후 실행해서 Export file을 눌러보면 이렇게 파일이 다운이 가능하다!

이렇게 하면 파이썬 기초 웹스크리퍼가 끝이 난다!

profile
선명한 삶을 살기 위하여

0개의 댓글