
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
안녕하세요! 선생님 질문이 있습니다.
from pymongo import MongoClient
client = MongoClient('mongodb+srv://test:sparta@cluster0.bv2hvyf.mongodb.net/cluster0?retryWrites=true&w=majority')
db = client.dbsparta
user = db.users.find_one({'name': 'boby'})
print(user['age'])
바비의 age를 가져오고 싶다 그러면 user['age'] 이렇게 하셨는데,
앞에 3-7, 3-8 강의를 보면,
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.naver?sel=pnt&date=20210829',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
#old_content > table > tbody > tr:nth-child(2) > td.title > div > a
#old_content > table > tbody > tr:nth-child(3) > td.title > div > a
#old_content > table > tbody > tr:nth-child(4) > td.title > div > a
#old_content > table > tbody > tr:nth-child(2) > td:nth-child(1) > img
#old_content > table > tbody > tr:nth-child(2) > td.point
movies = soup.select('#old_content > table > tbody > tr')
for movie in movies:
a = movie.select_one('td.title > div > a')
if a is not None:
title = a.text
rank = movie.select_one('td:nth-child(1) > img')['alt']
star = movie.select_one('td.point').text
print(title, rank, star)
for movie in movies:
a = movie.select_one('td.title > div > a')
if a is not None:
title = a.text
rank = movie.select_one('td:nth-child(1) > img')['alt']
star = movie.select_one('td.point').text
print(title, rank, star)
여기서는 보시면,
title의 text만 뽑아 내기 위해서 a.text
rank 의 이미지만을 뽑아내기 위해서 ['alt]
star에서는 평점의 text를 뽑아내기위해서 .text
를 하셨는데
혹시 이러한 것들이 어떤 규칙에 의해서 .text [
3-7강에서는
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.naver?sel=pnt&date=20210829>;',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
#old_content > table > tbody > tr:nth-child(2) > td.title > div > a
title = soup.select_one('#old_content > table > tbody > tr:nth-child(2) > td.title > div > a')
print(title['href'])
print(title['href']) ⇒실행하면, => /movie/bi/mi/basic.naver?code=186114
title['href'] 를 쓰셨는데
a.text => bs4
rank['alt'] => bs4
star.text => bs4
title['href'] => bs4
user['age'] => mongodb
왜 title.href 가아닌, title['href]를 쓰는 것이고
왜 rank.alt 가 아닌 rank['alt']를 쓰는것이고
왜 user.age 가 아닌, user['age'] 라고 쓰는 것인가요?
파이썬에서 어떤 규칙들이나 어떤 이유에 의해서 위처럼 정의 되는지 궁금합니다.
이것을 다 외우는 것은 아니고 어떠한 원리나 정의가 있는 것 같은데 그것이 무엇인지 어떤 개념으로 이렇게 쓰이고 있는지 궁금합니다.
