Notice
Recent Posts
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- JS 스코프
- JS value속성
- JS 데이터타입
- JS typeof연산자
- JS localStorage
- HTML기초
- JS appendChild
- JS prompt
- git 협업셋팅
- JS append
- JS setTimeout
- JS 숫자
- js 변수
- JS setInterval
- JS preventDefault
- JS null undefined
- JS clearInterval
- JS 타이머기능
- JS 형변환
- JS redirection
- JS 삼항연산
- JS 기초
- JS 함수
- JS 화살표함수
- JS form action
- JS form
- JS 연산
- CSS기초
- CSS속성정리
- JS classList
Archives
공부기록용
웹개발 종합반 3주차_02 본문
# pymongo 연결 코드를 맨 위에 넣어주고
# url은 다음 데이터들을 저장할 mongoDB url을 넣어준다(위에 한 방법)
from pymongo import MongoClient
client = MongoClient('mongodb+srv://test:sparta@cluster0.ybbyzho.mongodb.net/?retryWrites=true&w=majority')
db = client.dbsparta
# 여기부터는 mongoDB에 넣을 데이터를 크롤링 해서 어떤 데이터를 넣을지 한 것
import requests
from bs4 import BeautifulSoup
URL = "https://movie.daum.net/ranking/reservation"
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')
video_list = soup.select("#mainContent > div > div.box_ranking > ol > li")
for v in video_list:
# print(v)
rank = v.select_one(".rank_num").text
title = v.select_one(".tit_item").text.strip("\n")
rate = v.select_one(".txt_grade").text
doc = {
'title': title,
'rank': rank,
'rate': rate
}
db.movies.insert_one(doc)
# movies파일?을 만들고 크롤링한 다음의 데이터들을 mongoDB에 저장함
> 그럼 크롤링 할 웹 페이지에서 크롤링 한(제목_title, 순위_rank, 평점_rate) 데이터가 mongoDB에 새로운 movies를 만들고 저장된걸 확인 가능!
영화제목 '[범죄도시3]'의 평점을 가져오기
from pymongo import MongoClient client = MongoClient('mongodb+srv://test:sparta@cluster0.ybbyzho.mongodb.net/?retryWrites=true&w=majority') db = client.dbsparta movie = db.movies.find_one({'title':'범죄도시3'}) print(movie['rate'])
from pymongo import MongoClient client = MongoClient('mongodb+srv://test:sparta@cluster0.ybbyzho.mongodb.net/?retryWrites=true&w=majority') db = client.dbsparta movie = db.movies.find_one({'title':'범죄도시3'}) target_rate = movie['rate'] movies = list(db.movies.find({'rate':target_rate},{'_id':False})) print(movies)
코드 해석# 코드 해석 from pymongo import MongoClient client = MongoClient('mongodb+srv://test:sparta@cluster0.ybbyzho.mongodb.net/?retryWrites=true&w=majority') db = client.dbsparta # movie는 mongoDB에 저장된 movies중에 title가 범죄도시3인 걸 뜻하는데 movie = db.movies.find_one({'title':'범죄도시3'}) # print(movie['rate']) : 6.9 -> (mongoDB에 저장된 movies중에 title가 범죄도시3)인 movie의 평점 # target_rate라고 칭할꺼야 (mongoDB에 저장된 movies중에 title가 범죄도시3)인 movie의 평점을 target_rate = movie['rate'] # movies는 mongoDB에 저장된 리스트중 movies에서 찾을껀대 # rate가 target_rate인걸 찾을꺼야, 단 id는 제거하고 movies = list(db.movies.find({'rate':target_rate},{'_id':False})) print(movies)
> 범죄도시3와 같은 평점은 없어서 범죄도시에 대한 정보만 나옴
'[범죄도시3]'의 평점과 같은 평점의 영화 제목들을 가져오기
from pymongo import MongoClient client = MongoClient('mongodb+srv://test:sparta@cluster0.ybbyzho.mongodb.net/?retryWrites=true&w=majority') db = client.dbsparta movie = db.movies.find_one({'title':'범죄도시3'}) target_rate = movie['rate'] movies = list(db.movies.find({'rate':target_rate},{'_id':False})) for a in movies: print(a['title']) # movies를 돌면서 가져와 title를
> movies는 범죄도시3와 같은 평점을 가진 것의 정보를 담고 있고 그 같은 평점을 가지고 있는 데이터의 title을 가져오는것, 다만 범죄도시3와 같은 평점이 없어서 범죄도시3만 출력된것
'[범죄도시3]' 영화의 평점을 0으로 만들기
from pymongo import MongoClient client = MongoClient('mongodb+srv://test:sparta@cluster0.ybbyzho.mongodb.net/?retryWrites=true&w=majority') db = client.dbsparta db.movies.update_one({'title':'범죄도시3'},{'$set':{'rate':'0'}})
3주차 숙제
지니뮤직의 1~50위 곡을 스크래핑
# mongoDB 연결
from pymongo import MongoClient
client = MongoClient('mongodb+srv://test:sparta@cluster0.ybbyzho.mongodb.net/?retryWrites=true&w=majority')
db = client.dbsparta
# requests로 웹 사이트 연결
# bs4로 크롤링 준비
import requests
from bs4 import BeautifulSoup
URL = "https://www.genie.co.kr/chart/top200?ditc=M&rtm=N&ymd=20230101"
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')
# songs로 모두 긁어오고
songs = soup.select('#body-content > div.newest-list > div > table > tbody > tr')
# songs로 가져온 정보들을 돌아가면서 다음과 같은 데이터만 추출
for song in songs:
title = song.select_one('td.info > a.title.ellipsis').text.strip()
rank = song.select_one('td.number').text[0:2].strip()
artist = song.select_one('td.info > a.artist.ellipsis').text
print(rank, title, artist)
for song in songs: title = song.select_one('td.info > a.title.ellipsis').text.strip() rank = song.select_one('td.number').text[0:2].strip() artist = song.select_one('td.info > a.artist.ellipsis').text print(rank, title, artist)
> .stip --> 앞뒤공백을 지워줌
> [0:2] -->0에서2까지라는 뜻으로 두가지만 나타남
.select 할때 참고# 선택자를 사용하는 방법 (copy selector) soup.select('태그명') soup.select('.클래스명') soup.select('#아이디명') soup.select('상위태그명 > 하위태그명 > 하위태그명') soup.select('상위태그명.클래스명 > 하위태그명.클래스명') # 태그와 속성값으로 찾는 방법 soup.select('태그명[속성="값"]') # 한 개만 가져오고 싶은 경우 soup.select_one('위와 동일')
'📚강의록📚 > 스파르타)웹 개발 종합' 카테고리의 다른 글
웹개발 종합반 4주차_02(화성땅,영화기록) (0) | 2023.06.05 |
---|---|
웹개발 종합반 4주차_01 (0) | 2023.06.05 |
웹개발 종합반 3주차_01 (0) | 2023.06.05 |
웹개발 종합반 2주차_02 (0) | 2023.06.01 |
웹개발 종합반 2주차_01 (0) | 2023.06.01 |
Comments