반응형
- 영화 정보와 코멘트를 API를 통해 가져와서 메모장에 적용하기
- 영화 랭킹, 제목, 영화설명, 코멘트를 API를 통해 Ajax방식으로 가져오기
- 이전에 만들었던 나홀로 메모장을 응용해서 만들기
-
<script>
$(document).ready(function () {
listing();
});
function listing() {
$('#cards').empty();
$.ajax({
type: "GET",
url: "http://spartacodingclub.shop/post",
data: {},
success: function (response) {
let rows=response['articles'];
for(let i=0;i<rows.length;i++){
let comment=rows[i]['comment'];
let desc=rows[i]['desc'];
let image=rows[i]['image'];
let title=rows[i]['title'];
let url=rows[i]['url'];
let temp_html=`<div class="card">
<img class="card-img-top"
src="${image}"
alt="Card image cap">
<div class="card-body">
<p><a href="${url}" class="card-title">< ${title} ></a></p>
<p class="card-text">${desc}</p>
<p class="card-comment">Comment: ${comment}</p>
</div>
</div>`;
$('#cards').append(temp_html);
}
}
})
}
[수업 목표]
- 파이썬 기초 문법을 안다.
- 원하는 페이지를 크롤링 할 수 있다.
- pymongo를 통해 mongoDB를 제어할 수 있다.
파이썬 기초 문법
- 반복문, 리스트, 딕셔너리 안에 리스트 넣기
fruits = ['사과', '배', '배', '감', '수박', '귤', '딸기', '사과', '배', '수박']
for fruit in fruits:
print(fruit)
people = [{'name': 'bob', 'age': 20},
{'name': 'carry', 'age': 38},
{'name': 'john', 'age': 7},
{'name': 'smith', 'age': 17},
{'name': 'ben', 'age': 27}]
for person in people:
print(person['name'])
- 버전이 다른 라이브러리를 번갈아 쓸 때?
- 설치-삭제-설치-삭제... 번거로움
- 공구함=가상환경(라이브러리를 담아두는 환경) 을 만들어서 여러 버전을 넣어두고 쓴다.
- venv(Virtual Environment) 폴더에 포함됨.
- 파이참 환경설정-해당 프로젝트-인터프리터-requests 인스톨
- requests 패키지, bs4 패키지 사용해서 크롤링하기
- 크롤링이 가능한 이유?
- 1. 브라우저에 데이터를 요청한다. = requests의 역할
- 2. 내가 원하는 정보를 잘 속아낸다. = bs4가 하는 역할
- 크롤링이 가능한 이유?
- html에서 copy selector
- 해당 태그의 속성값을 가져오려면 ['속성'] 으로 쓴다.
import requests
from bs4 import BeautifulSoup
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('https://movie.naver.com/movie/sdb/rank/rmovie.nhn?sel=pnt&date=20200303', headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
title=soup.select_one('#old_content > table > tbody > tr:nth-child(2) > td.title > div > a')
print(title)
print(title.text)
print(title['href'])
- 영화제목 가져오기
- tr의 갯수만큰 영화제목이 있으므로, 그 만큼 반복문을 돌린다.
-
trs=soup.select('#old_content > table > tbody > tr') for tr in trs: a_tag=tr.select_one('td.title > div > a') if(a_tag is not None): title=a_tag.text print(title)
- 연습, 랭크+제목+평점 가져오기
trs=soup.select('#old_content > table > tbody > tr')
for tr in trs:
a_tag=tr.select_one('td.title > div > a')
if a_tag is not None:
title = a_tag.text
rank = tr.select_one('td:nth-child(1) > img')['alt']
point = tr.select_one('td.point').text
print(rank, title, point)
저번주차까지 한 내용을 복습 겸 응용해서 웹 페이지를 뜯어보는 연습을 했다.
이제, 파이썬을 가지고 데이터베이스를 다루고
웹에 있는 정보를 재구성하여, 쓸모있는 웹 페이지를 만드는 작업을 할 차례이다!
플라스크를 써본적이 없고, 데이터베이스를 가지고 웹페이지를 만들어 본적이 없어서 이 부분이 가장 기대가 된다.
아마 파이썬이 가장 쉽고 문법이 직관적인 언어이기 때문에,
이 언어를 활용해서 만들 수 있는 플라스크를 사용해서 강의하는 것 같다.
백엔드는 언어 선택지가 많으니까 시작할 때 쉬운걸로 선택하는 것도 최선의 선택이라고 생각한다!!
기대기대!!
반응형
'Web Development' 카테고리의 다른 글
[프론트엔드] 입문자 공부 방법, 로드맵, 취업 포트폴리오, 코딩 빨리 배우는 법, 코딩 유튜브 추천 (0) | 2021.07.27 |
---|---|
[웹개발종합반] 3주차 개발일지 (2) - MongoDB (0) | 2021.07.26 |
[웹개발종합반] 2주차 개발일지 -JS, JQuery, Ajax (0) | 2021.07.24 |
[웹개발종합반] 1주차 개발일지 (2). JavaScript 기초 (0) | 2021.07.24 |
[웹개발종합반] 1주차 개발일지 (1) - HTML과 부트스트랩 응용 (0) | 2021.07.21 |