- 이 글은 웹개발 종합반 강의를 수강하고 공부한 내용을 정리하는 용도로 작성되었습니다.
- 추가학습이 필요한 부분은 ❓이렇게 표시하고 학습 이후 글을 업로드 합니다.
문제 상황
강의를 들으면서 튜터님의 설명을 따라 코드를 쳤지만 연결에 실패했다.
from pymongo import MongoClient
client = MongoClient('mongodb+srv://test:sparta@cluster0.내주소.mongodb.net/Cluster0?retryWrites=true&w=majority')
db = client.dbsparta
doc = {
'name':'bob',
'age':27
}
db.users.insert_one(doc)
FAQ 문서에서 동일한 문제 상황과 해결 방법 발견했지만 여전히 연결되지 않았다.
Q. DB Atlas 사용시,
pymongo.errors.ServerSelectionTimeoutError: ~ [SSL: CERTIFICATE_VERIFY_FAILED]~
를 포함한 에러 메시지가 뜨면서 실행이 되지 않습니다.
A.
- 사용하고 있는 인터넷 환경에 따라 보안 관련 추가 설정을 해주어야할 때가 있어요.
- certifi 패키지를 가상환경에 먼저 설치해주세요~!
- 아래 형광펜 칠한 코드 부분을 추가해서 사용해보세요~! 특히
client = MongoClient
부분 코드 맨 끝에 있는tlsCAFile=ca
를 추가하는 것 잊지 마세요!- 아래 코드에서
내주소
를 실제 내 DB 주소로 바꾸는 것 잊지 마세요~! 😉
from pymongo import MongoClient
import certifi
ca = certifi.where()
client = MongoClient('mongodb+srv://test:sparta@cluster0.내주소.mongodb.net/내DB명?retryWrites=true&w=majority', tlsCAFile=ca)
db = client.dbsparta
doc = {
'name':'bob',
'age':27
}
db.users.insert_one(doc)
구글링으로도 해결하지 못했다.
원점에서 다시 시작하기 위해 Cluster0
을 원래 상태인 myFirstDatabase
로 바꿨더니 해결됐다!!!!!
=> 오류의 원인은 Cluster0
이었던 것
from pymongo import MongoClient
client = MongoClient('mongodb+srv://test:sparta@cluster0.내주소.mongodb.net/myFirstDatabase?retryWrites=true&w=majority')
db = client.dbsparta
doc = {
'name':'bob',
'age':27
}
db.users.insert_one(doc)
title = music.select_one('td.info > a.title.ellipsis').text.strip()
하위 태그 제거 방법 등을 고려했지만 해결하지 못했다.
문자열 추출(Slicing) text[4:}을 통해 해결!!!!!!!!!
전체 코드
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://www.genie.co.kr/chart/top200?ditc=M&rtm=N&ymd=20210701',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
#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(2) > 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(2) > td.info > a.title.ellipsis
#body-content > div.newest-list > div > table > tbody > tr:nth-child(1) > td.info > a.artist.ellipsis
#body-content > div.newest-list > div > table > tbody > tr:nth-child(3) > td.info > a.artist.ellipsis
musics = soup.select('#body-content > div.newest-list > div > table > tbody > tr')
for music in musics:
rank = music.select_one('td.number').text[0:2].strip()
artist = music.select_one('td.info > a.artist.ellipsis').text
title = music.select_one('td.info > a.title.ellipsis').text[4:].strip()
print(rank,title,artist)