본문 바로가기

끄적끄적

3주차 부족부분 공부

파이썬에서 딕셔너리(dictionary)란 사전형 데이터를 의미하며, key와 value를 1대1로 대응시킨 형태입니다.
--------------------------------------------------------------------------

BeautifulSoup
Requests는 정말 좋은 라이브러리이지만, html을 '의미있는', 즉 Python이 이해하는 객체 구조로 만들어주지는 못한다. 위에서 req.text는 python의 문자열(str)객체를 반환할 뿐이기 때문에 정보를 추출하기가 어렵다.

따라서 BeautifulSoup을 이용하게 된다. 이 BeautifulSoup은 html 코드를 Python이 이해하는 객체 구조로 변환하는 Parsing을 맡고 있고, 이 라이브러리를 이용해 우리는 제대로 된 '의미있는' 정보를 추출해 낼 수 있다.

BeautifulSoup에서는 여러가지 기능을 제공하는데, 여기서는 select를 이용한다. select는 CSS Selector를 이용해 조건과 일치하는 모든 객체들을 List로 반환해준다.

 title.get('속성이름')=>   print(title.get('href'))나

title['속성이름' ] => print(title.text) 처럼 이용할 수 있다. 
   =얘를 쓰려면 select_one을 사용해야한다.


✅print(soup)을 해보면 html으로 가져왔고 거기서 내가 필요한 부분을 가져오기 위해서
   bs4의 문법인select, select_one을 사용했다.
    soup을 사용해서 html을 가져오면 list형태로 가져오기 때문에 for문으로 한번 돌려줘서 가져와야하며
   그리고 나서 부분 발췌는 select_one을 사용하는게 좋다.



---------------------------------------------------------

<DBmongo연결하기>
db프로그램을 조작하려면 필요한 패키지 => pymongo , dnspython

from pymongo import MongoClient
client = MongoClient('여기에 URL 입력')
db = client.dbsparta
(dbmongo 기본 코드)

 

-----------------------------------------------------------------------------------------------------

target_movie = db.practice.find_one({'title': '가버나움'})
star_movie = target_movie['star']

movies = list(db.practice.find({'star': star_movie}))

for movie in movies:
    print(movie['title'])

퀴즈로 평점이 같은 영화끼리 제목만 나오도록 크롤링 해보라고 했는데

나는 if부터 시작해서 다 넣어서 했더니 이렇게 간단하게 나올줄이야....

find를 이용하면 필요한 부분만 쏙 찾을 수 있다는 거 다시 각인시키면서.....!

 

 


숙제로 지니 rank , title, artist 크롤링

 

>지니 크롤링
  순위 / 곡제목 / 가수  print(rank,title,artist)

-------구글링--------
앞에 두 글자 끊어보기 text[0:2] (slicing=추출)

여백,다른글씨 등 없애고 깔끔하게 글 나오게 하기  strip()

---------------------------------

b = "Hello, World!"
print(b[2:5])

Get the characters from position 2 to positio5 (not included):

 

'끄적끄적' 카테고리의 다른 글

React memoization  (0) 2023.04.23
typescript interface  (0) 2023.04.12
좋은 TIL은 뭘까?(38)  (1) 2022.12.22
CSS-flex  (0) 2022.11.16
4주차 부족한부분 공부  (0) 2022.10.28