requests.get('url',headers=headers)
BeautifulSoup(data.text, 'html.parser')
select()
select_one()
함수가 있음select()
는 모든 결과를 리스트에 담고, select_one()
은 하나의 요소만 반환import requests
from bs4 import BeautifulSoup
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta
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://www.genie.co.kr/chart/top200?ditc=D&ymd=20200403&hh=23&rtm=N&pg=1',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
# 가져온 선택자
#body-content > div.newest-list > div > table > tbody > tr:nth-child(1)
#body-content > div.newest-list > div > table > tbody > tr:nth-child(1) > td.number
#body-content > div.newest-list > div > table > tbody > tr:nth-child(1) > td.info > a.title.ellipsis
#body-content > div.newest-list > div > table > tbody > tr:nth-child(1) > td.info > a.artist.ellipsis
genies = soup.select('#body-content > div.newest-list > div > table > tbody > tr')
for ff in genies:
rank = ff.select_one('td.number').text[:2].strip()
title = ff.select_one('td.info > a.title.ellipsis').text.strip()
singer = ff.select_one('td.info > a.artist.ellipsis').text
print(rank, singer, singer)
- 코드를 작성할 때는 copy selector가 뭔지, 왜 해야하고 어떻게 잘라 쓰는지 몰랐는데 복습하고 찾아보면서 알게됨
- 코드 하나 하나 실행해보면서 진행하기
from pymongo import MongoClient #pymongo import
client = MongoClient('localhost', 27017) # 내 컴퓨터에서 사용
db = client.dbsparta # dbsparta라는 이름으로 접속(저장소명)
insert
,find
,update
,delete
를 사용#insert
doc = {'name':'jane','age':21}
db.users.insert_one(doc)
#db안에 users라는 컬렉션안에 insert
#find
db.users.find({'age':21},{'_id':False})
#조건에 해당하는 데이터를 가져옴
db.users.find_one({'name':'bobby'},{'_id':False})
#여러개 있어도 제일 위에 있는 하나만 가져옴
#update
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})
db.users.update_many({'name':'bobby'},{'$set':{'age':19}})
#many는 조건에 해당하는 전부를 update
#delete
db.users.delete_one({'name':'bobby'})
db.users.delete_many({'name':'bobby'})
210531
확실히 처음 배우던 시점에서의 느낌과 다르다. 머리로 들어오는 정보의 양도 다르고 어느부분을 더 공부해야할지 판단이 선다. 하지만 비효율적으로 느껴지는 부분은 어느정도 넘겨야할듯.