[MongoDB][Python] 웹 스크래핑(크롤링) 결과 DB에 저장하기
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta
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.nhn?sel=pnt&date=20200303',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
title = soup.select_one('#old_content > table > tbody > tr:nth-child(2) > td.title > div > a')
print(title) # select_one # <a href="/movie/bi/mi/basic.nhn?code=171539" title="그린 북">그린 북</a>
print()
print(title.text) # .text 태그 안 텍스트만 가져오기 # 그린 북
print()
print(title['href']) # 태그 속성만 가져오기 # /movie/bi/mi/basic.nhn?code=171539
print()
#두 카피셀렉터 비교
#old_content > table > tbody > tr:nth-child(2)
#old_content > table > tbody > tr:nth-child(3)
#비교 후 상위값만 분류
#old_content > table > tbody > tr # tr들로 분류
trs = soup.select('#old_content > table > tbody > tr') # select 결과는 리스트로 나옴
#old_content > table > tbody > tr:nth-child(2) > td.title > div > a
#td.title > div > a # tr 하위에서 또 찾기
for tr in trs:
a_tag = tr.select_one('td.title > div > a')
if a_tag is not None:
title = a_tag.text
rank = tr.select_one('td:nth-child(1) > img')['alt']
star = tr.select_one('td.point').text
doc = {
'rank' : rank,
'title' : title,
'star' : star
}
db.movies.insert_one(doc)
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta
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.nhn?sel=pnt&date=20200303',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
title = soup.select_one('#old_content > table > tbody > tr:nth-child(2) > td.title > div > a')
print(title) # select_one # <a href="/movie/bi/mi/basic.nhn?code=171539" title="그린 북">그린 북</a>
print()
print(title.text) # .text 태그 안 텍스트만 가져오기 # 그린 북
print()
print(title['href']) # 태그 속성만 가져오기 # /movie/bi/mi/basic.nhn?code=171539
print()
#두 카피셀렉터 비교
#old_content > table > tbody > tr:nth-child(2)
#old_content > table > tbody > tr:nth-child(3)
#비교 후 상위값만 분류
#old_content > table > tbody > tr # tr들로 분류
trs = soup.select('#old_content > table > tbody > tr') # select 결과는 리스트로 나옴
#old_content > table > tbody > tr:nth-child(2) > td.title > div > a
#td.title > div > a # tr 하위에서 또 찾기
for tr in trs:
a_tag = tr.select_one('td.title > div > a')
if a_tag is not None:
title = a_tag.text
rank = tr.select_one('td:nth-child(1) > img')['alt']
star = tr.select_one('td.point').text
doc = {
'rank' : rank,
'title' : title,
'star' : star
}
db.movies.insert_one(doc)
'개발 => 복습 후 재정리 대기 > MongoDB' 카테고리의 다른 글
[MongoDB] pymongo 계정 접속 (0) | 2021.05.16 |
---|---|
[MongoDB][Python] 실습 (0) | 2021.05.09 |
[MongoDB][Python] pymongo 기본 코드 (0) | 2021.05.08 |
[MongoDB][Pymongo][Python] 정렬 - sort (0) | 2021.05.04 |
[MongoDB][Python] 기본 문법 (0) | 2021.05.02 |
댓글