크롤링
1. BeautifulSoup
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')
# 선택자를 사용하는 방법 (copy selector)
soup.select('태그명')
soup.select('.클래스명')
soup.select('#아이디명')
soup.select('상위태그명 > 하위태그명 > 하위태그명')
soup.select('상위태그명.클래스명 > 하위태그명.클래스명')
# 태그와 속성값으로 찾는 방법
soup.select('태그명[속성="값"]')
# 한 개만 가져오고 싶은 경우
soup.select_one('위와 동일')
* img src 값을 가져와야 할 때
tr = soup.select_one('.lst50')
image = tr.select_one('img')['src']
Flask 시작하기
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return 'This is Home!'
if __name__ == '__main__':
app.run(debug=True)
1. URL에 따라 다른 화면 보여주기 : @app.route('/') 괄호 안의 부분 수정
* 주의할 점
- url 별로 함수명이 같거나,
- route('/') 내의 주소가 같으면 안된다.
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return 'This is Home!'
@app.route('/mypage')
def mypage():
return 'This is My Page!'
if __name__ == '__main__':
app.run(debug=True)
2. html 파일 불러오기
app.py에 flask 내장함수 render_template를 이용해서 HTML 파일을 불러올 수 있음. |
from flask import Flask, render_template
app = Flask(__name__)
## URL 별로 함수명이 같거나,
## route('/') 등의 주소가 같으면 안됩니다.
@app.route('/')
def home():
return render_template('index.html')
if __name__ == "__main__":
app.run(debug=True)
3. 데이터 넘겨주기
변수에 원하는 데이터를 넣고, render_template('index.html' , 데이터이름=데이터) 방식으로 코드 추가 |
@app.route('/')
def home():
name = "최지웅"
lotto = [16, 18, 20, 23, 32, 43]
# 데이터를 여러개 넘겨줄때 딕셔너리 사용
context = {
"name": name,
"lotto": lotto,
}
return render_template('index.html', data=context)
* 코드 작성(index.html)
<body>
<h1>안녕, {{ data.name }}</h1>
<h2>로또 번호: {{ data.lotto }}</h2>
</body>
* 리스트의 경우 값을 하나씩 출력시켜주기 위해(index.html) : 단축키 ffor
<body>
{% for number in data.lotto %}
<li>{{ number }}</li>
{% endfor %}
</body>
4. 이미지 불러오기( 주로 static 폴더 안에 이미지 파일을 넣어 사용)
이미지 태그는 url_for를 활용해주시면 됩니다.
url_for는 보통 경로(위치)를 표현할 수 있습니다.
아래와 같이 이미지 경로 부분만 바꿔주시면 쉽게 이미지를 쓸 수 있습니다!
<img src="{{ url_for('static', filename='이미지 경로') }}" alt="">
5. form 만들기
form 은 회원 가입, 검색, 게시글 작성에 사용하는데요. form 에 데이터를 입력하고 전송 버튼을 누르면, 입력한 데이터가 서버로 전송됩니다. action 에는 url_for 로 데이터를 보낼 url을 설정해주고, name 속성을 활용해서 데이터에 명찰을 붙여줍니다. </aside> |
<form action="{{ url_for('movie') }}">
<input type="text" name="query">
<button type="submit">검색</button>
</form>
* < form action="{{ url_for('movie') }}"> : app.py에 있는 movie 함수로 데이터를 보냄
* HTML에서 보낸 값을 받아오기
movie 함수에서 request.args.get('name 속성명') 활용 |
from flask import Flask, render_template, request
@app.route('/movie')
def movie():
# html에서 name=query 값을 가진 컴포넌트가 있어야 함.
print(request.args.get('query'))
return render_template('movie.html')
'Flask > 웹개발' 카테고리의 다른 글
[GPT] 웹개발 4주차 | Flask & DB (0) | 2023.10.15 |
---|---|
[GPT] 웹개발 2주차 | Javascript&JQuery (1) | 2023.10.15 |
[GPT] 웹개발 1주차 | HTML&CSS (0) | 2023.10.15 |