TIL 240117

hyeo71·2024년 1월 17일
0

2024 내배캠 AI 트랙

목록 보기
8/108

오늘 공부

  • 웹 스크래핑
  • Flask
  • SQL 61~65

웹 스크래핑

  • python
  • bs4(beautiful soup)

가상 환경

같은 시스템에서 실행되는 다른 파이썬 응용 프로그램들의 동작에 영향을 주지 않기 위해, 파이썬 배포 패키지들을 설치하거나 업그레이드하는 것을 가능하게 하는 격리된 실행 환경

가상환경 A, B가 있다고 할 때, A의 python 버전을 3.8, B의 python 버전을 3.10 이런식으로 같은 패키지도 다른 버전으로 관리가 가능하고 프로젝트마다 그에 맞는 환경을 독립적으로 구성할 수 있다.

VSC의 명령 팔레트(ctrl+shift+p)에서 'env'를 검색하여 Venv를 클릭하면 Venv 가상환경을 만들 수 있다. (나는 poetry 사용중)

패키지 설치

Venv: pip install (패키지)
poetry: poetry add (패키지)

bs4 기본 구조

import requests
from bs4 import BeautifulSoup

URL = "https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=날씨"
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
data = requests.get(URL, headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')

soup 라는 변수에 해당 url의 html정보를 가져옴

원하는 html 정보만 가져오기

select(): 해당 태그를 가진 정보를 다 가져온다. (복수)
select_one(): 해당 태그를 가진 정보를 한개만 가져온다. (단수)

# select_one()도 동일
soup.select('태그명')
soup.select('.클래스명')
soup.select('#아이디명')

soup.select('상위태그명 > 하위태그명 > 하위태그명')
soup.select('상위태그명.클래스명 > 하위태그명.클래스명')

# 태그와 속성값으로 찾는 방법
soup.select('태그명[속성="값"]')

Flask

기본 구조

  • static: 이미지
  • templates: html
  • app.py: url, logic

app.py

from flask import Flask
app = Flask(__name__)

@app.route('/')
def home():
    return 'This is Home!'

if __name__ == '__main__':  
    app.run(debug=True)

templates/xxx.html

템플릿 변수, 템플릿 태그 사용 가능

탬플릿 변수

{{ variable }}: 변수명은 일반 프로그래밍처럼 사용
도트 표현식으로 변수 속성 접근 가능

탬플릿 태그

{% tag %}: 기본 형식은 이렇지만 시작태그와 끝태그가 있는 태그도 있다.
텍스트 결과물, 템플릿 로직, 외부 파일 로딩 등의 기능


# for 태그
{% for element in element_list %}
	<li>{{ element.xxx }}</li>
{% endfor %}

# img 태그
<img src="{{ url_for('static', filename='이미지 경로') }}" alt="">

SQL 문제(61~65)

0개의 댓글