웹크롤링
가상환경을 만드는 이유 ?
- 프로젝트 공구함과 같은 것 , 프로젝트에 필요한 라이브러리들을 모아놓은 것 , 프로젝트 폴더 venv 안에 라이브러리들을 넣어둠
크롤링이 가능한 이유 ?
- 내가 이미 서버로부터 request로 데이터를 요청하고 받아온 데이터이기 때문이다
beautifulsoup4 와 같은 라이브러리로 이 데이터를 솎아냄 (정리,분석)
크롤링방법
- copy selector는 즉 선택자 , 내가 크롤링하고자 하는 정보가 어디 있는지 알려줌
- ex) title=soup.select_one('#old_content > table > tbody > tr:nth-child(2) > td.title > div > a') 을 copy selector로 갖고와 이 정보를 사용가능하다.
- ex) genie 음원 차트 크롤링
songs = soup.select('#body-content > div.newest-list > div > table > tbody > tr')
for song in songs:
rank=song.select_one('td.number').text[0:2].strip()
title=song.select_one('td.info > a.title.ellipsis').text.strip()
artist=song.select_one('td.info > a.artist.ellipsis').text
print(rank,title,artist)
DATABASE
- MongoDB vs robo3t
MongoDB는 내 눈에 보이지 않게 실행되는 데이터베이스이고 이것을 시각적으로 보여주는 것이 robo3t이다.
- SQL vs NOSQL
sql은 좀 더 정형화된 형태이고 nosql( MongoDB)은 더 유연하다.
Flask
- Flask 프레임워크로 남이 짜준 틀 안에서 나는 서버를 만들 수 있다
- 내가 app.py(서버)를 만들고 run 한 후 내 크롬 브라우저에 localhost:5000을 입력하여 접속하는 것이 로컬개발환경이다 . 내가 내 컴퓨터에서 다른 브라우저를 열어 서버를 돌리고 있는 것이다. 이렇게 하면 한대의 컴퓨터로도 실행이 가능하다.
웹서버와 웹브라우저
from flask import Flask,render_template
app = Flask(__name__)
@app.route('/')
def home():
return render_template('index.html')
와 그냥 index.html로 접속하는 것은 무슨 차이점이 있을까 ?
- 전자는 내가 서버에 요청을 해서 서버가 가지고 있던 index.html을 응답받은 것이고 후자는 내가 내 파일에 있던 index.html을 연 것이다