티스토리 뷰

반응형

insert 연습하기 - 웹스크래핑 결과를 DB에 저장하기

[코드스니펫] 크롤링 완성코드

import requests

from bs4 import BeautifulSoup

 

# URL을 읽어서 HTML를 받아오고,

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)

 

# HTML을 BeautifulSoup이라는 라이브러리를 활용해 검색하기 용이한 상태로 만듦

soup = BeautifulSoup(data.text, 'html.parser')

 

# select를 이용해서, tr들을 불러오기

movies = soup.select('#old_content > table > tbody > tr')

 

# movies (tr들) 의 반복문을 돌리기

for movie in movies:

      # movie 안에 a 가 있으면,

      a_tag = movie.select_one('td.title > div > a')

      if a_tag is not None:

           rank = movie.select_one('td:nth-child(1) > img')['alt']         # img 태그의 alt 속성값을 가져오기

           title = a_tag.text                                                       # a 태그 사이의 텍스트를 가져오기

           star = movie.select_one('td.point').text                           # td 태그 사이의 텍스트를 가져오기

           print(rank,title,star)

pymongo 기본 세팅

import requests

from bs4 import BeautifulSoup

 

from pymongo import MongoClient                             # pymongo를 임포트 하기(패키지 인스톨 먼저 해야겠죠?)

client = MongoClient('localhost', 27017)                        # mongoDB는 27017 포트로 돌아갑니다.

db = client.dbsparta                                                  # 'dbsparta'라는 이름의 db를 만듭니다.

 

# URL을 읽어서 HTML를 받아오고,

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)

 

# HTML을 BeautifulSoup이라는 라이브러리를 활용해 검색하기 용이한 상태로 만듦

soup = BeautifulSoup(data.text, 'html.parser')

 

# select를 이용해서, tr들을 불러오기

movies = soup.select('#old_content > table > tbody > tr')

 

# movies (tr들) 의 반복문을 돌리기

for movie in movies:

      # movie 안에 a 가 있으면,

      a_tag = movie.select_one('td.title > div > a')

      if a_tag is not None:

      rank = movie.select_one('td:nth-child(1) > img')['alt']             # img 태그의 alt 속성값을 가져오기

      title = a_tag.text                                                            # a 태그 사이의 텍스트를 가져오기

      star = movie.select_one('td.point').text                                # td 태그 사이의 텍스트를 가져오기

      print(rank,title,star)

도큐먼트 만들어 하나씩 insert 하기

import requests

from bs4 import BeautifulSoup

 

from pymongo import MongoClient                          # pymongo를 임포트 하기(패키지 인스톨 먼저 해야겠죠?)

client = MongoClient('localhost', 27017)                     # mongoDB는 27017 포트로 돌아갑니다.

db = client.dbsparta                                              # 'dbsparta'라는 이름의 db를 만듭니다.

 

# URL을 읽어서 HTML를 받아오고,

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)

 

# HTML을 BeautifulSoup이라는 라이브러리를 활용해 검색하기 용이한 상태로 만듦

soup = BeautifulSoup(data.text, 'html.parser')

 

# select를 이용해서, tr들을 불러오기

movies = soup.select('#old_content > table > tbody > tr')

 

# movies (tr들) 의 반복문을 돌리기

for movie in movies:

    # movie 안에 a 가 있으면,

    a_tag = movie.select_one('td.title > div > a')

    if a_tag is not None:

        rank = movie.select_one('td:nth-child(1) > img')['alt']                 # img 태그의 alt 속성값을 가져오기

        title = a_tag.text                                                               # a 태그 사이의 텍스트를 가져오기

        star = movie.select_one('td.point').text                                   # td 태그 사이의 텍스트를 가져오기

        doc = {

            'rank' : rank,

            'title' : title,

            'star' : star

        }

        db.movies.insert_one(doc)

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
링크
글 보관함