크롤링
웹페이지에서 어떤 정보들을 가지고 온다는 이야기.
크롤링을 위한 준비.
python 라이브러리를 담을 폴더 생성
1. 파이썬 인터프리터 선택. 우측 맨 하단 파이썬 버전 선택 누르고 추천 표시로
2. 터미널 창에 입력 python3 -m venv venv
3. 새터미널 실행 하면 터미널에 (venv)가 적힌채로 나옴.
이게 무슨말이냐면 라이브러리를 venv 폴더에다 깔꺼야 라는 말.
4. requests 설치 . 터미널에 이렇게 입력 pip install requests
(여기서 잠깐!! requests 가 뭔데??
우리 fetch에서 썻던 기능과 비슷해 . 데이터를 가져와서 그럴 이용해서 뭔가 할 수 있지
를 한 후에
pip install bs4 라고 터미널에 입력후 설치하기.
크롤링으로 가져온 정보들 중 원하는 요소만 골라서 써보기.
아래와 같은 코드가 있다.
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')
title = soup.select_one('selector복사 한 내용 붙여넣기')
이처럼 크롤링으로 어떤 데이터들을 가져오면, 간단하게 링크만 걸어서 가져올 수 있는데,
여기서 내가 원하는 데이터만 골라오려면 일단 변수를 설정하고 거기에 넣어준다.
여기서 select_one 의 의미는, 그중 하나만 가져올꺼야. 라는 말.
만약 여러개 가져오려면 그냥 select 라고 적으면 된다.
변수 = 가져올변수.select_one(' selector복사 한 내용 붙여넣기 ')
이걸 출력해서 보고싶을때 당연히 print(변수명) 하면 되지만,
만약 내가 글자만 보고싶다면,
print(변수명.text)
크롤링으로 가져온 데이터들 파이썬에서 반복문 돌리기.
아래 코드를 보자.
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')
lis = soup.select('#mainContent > div > div.box_ranking > ol > li')
for li in lis:
title = li.select_one('.link_txt')
print(title.text)
아까 크롤링해서 가져온 데이터들 중 원하는 데이터들만 변수에 넣어줫는데,
거기서 특정한것만 반복해서 보이고 싶다면
일단 반복문을 만든다.
for 반복문 이름 in 가져올 변수 이름 :
새로운 변수이름 = 반복문 이름.select_one('.가져오려고 하는 데이터의 클래스 이름')
.strip( )
앞뒤로 붙은 띄어쓰기들을 다 없애준다.
.replace(',' , ' ' )
특정 문자를 없앨 수 있다.
mongoDB 에 데이터 올려두기.
강의대로 데이터를 업로드를 하려고 하는데,,, 오류가 나버렷다.
내일 정규과정 전 시험이라 맘은 급한데 계속 삽질만 하다가 드디어 해결.
나의 오류 메세지는 아래와 같다.
블라블라 겁나김 블라블라 ~~~ 마지막에
[SSL: CERTIFICATE_VERIFY_FAILED]
나의 해결 방법은 아래와 같다.
1. pip install certifi 추가로 설치
2. 코드에 import certifi
ca = certifi.where() 이거 두줄 추가.
3. 주소 넣는 괄호에, 그렇지만 '가 끝난후 ,tlsCAFile=ca 추가 입력.
4. 실행. 드뎌 두둥 되엇다😂😂😂😂
진짜 지옥과 천국을 오가는 기분... ㅎㅎ
아래는 전체 코드이다.
from pymongo import MongoClient
import certifi
ca = certifi.where()
client = MongoClient('mongodb+srv://sparta:test@cluster0.pqqngbq.mongodb.net/?retryWrites=true&w=majority', tlsCAFile=ca)
db = client.dbsparta
doc = {
'name': '히지',
'age':22
}
db.users.insert_one(doc)
인터프리터 설정시 vscode 아래에 숫자가 갑자기 안보인다>????!!!
1. F1 키 누른다.
2. python : Select interpreter 을 검색해서 클릭
3. 사용하고자 하는 인터프리터 검색 및 클릭.
mongoDB에서 데이터 가져오기
여러개 가져오게 하는 것
all_users = list(db.users.find({},{'_id':False}))
리스트니까 반복문까지 붙여서 하면 더 굿이겟당.
for a in all_users :
print(a['name'])
변수이름 설정 = list(db. db에서 가져올 위치 파일의 이름 .find({},{'_id':False})
회색글씨 한거는 블라블라 나오는거 안보이게 하는것.
이건 하나만 가져오게 하는것.
user = db.users.find_one({})
# 바꾸기 - 예시
db.users.update_one({'name':'영희'},{'$set':{'age':19}})
그럼 영희의 나이가 19로 바뀐다.
# 지우기 - 예시
db.users.delete_one({'name':'철수'})
그럼 철수의 데이터가 사라지면서, 철수이름, 철수 나이가 다 사라짐.