[3주차] Python 크롤링

2022. 11. 16. 01:06·교육/스파르타코딩클럽 - 내일배움단

Python이란?

Python이란 수많은 개발 언어 중 하나이고, 쉽고 간편하다는 장점이 있다.

웹 크롤링을 위해 몇가지 라이브러리를 설치하여 사용하는데 그 쓰임새는 다음과 같다.

1. requests 라이브러리는 2주차의 ajax와 같이 서버에 데이터를 요청하여 JSON형태로 받아오게 해주는 라이브러리이다.

import requests # requests 라이브러리 설치 필요

r = requests.get('http://spartacodingclub.shop/sparta_api/seoulair')
rjson = r.json()

gus = rjson['RealtimeCityAir']['row']

for gu in gus:
	print(gu['MSRSTE_NM'], gu['IDEX_MVL'])

2. bs4 라이브러리는 Html을 받아와 그것을 잘 처리하게 도와주는 라이브러리이다.

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.naver?sel=pnt&date=20210829',headers=headers)

# HTML을 BeautifulSoup이라는 라이브러리를 활용해 검색하기 용이한 상태로 만듦
# soup이라는 변수에 "파싱 용이해진 html"이 담긴 상태가 됨
# 이제 코딩을 통해 필요한 부분을 추출하면 된다.
soup = BeautifulSoup(data.text, 'html.parser')

 

Database란?

우리가 저장할 데이터를 잘 정리하여 사용할 수 있게 해주는 도구이다.

3주차 수업에서는 몽고DB와 Pymongo 라이브러리를 사용하여 파이썬에서 DB에 접근하였다.

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

doc = {
    'name':'bob',
    'age':27
}

db.users.insert_one(doc)

 

3주차 숙제

3주차 숙제는 지니뮤직의 1~50순위의 곡들의 정보를 크롤링 해오는 것이다.

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://www.genie.co.kr/chart/top200',headers=headers)

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

songs = soup.select('.music-list-wrap > table > tbody > tr')

for song in songs:
    rank = song.select_one('td.number').contents[0].text.strip()

    info_tag = song.select('td.info > a')
    title = info_tag[0].text.strip()
    artist = info_tag[1].text.strip()

    print(rank, title, artist)

먼저 requests 라이브러리를 통해 지니뮤직의 top200(https://www.genie.co.kr/chart/top200)의 데이터들을 받아온다.

그 다음 bs4를 통해 그 데이터를 가공하고 그 중 music-list-wrap이라는 클래스를 가진 태그 하위으 tr 태그들을 songs라는 변수에 저장하였다.

그리고 그 songs들 중 td.number의 첫번째 내용은 순위인 rank,

td.info의 a 태그 중 첫번째는 제목인 title, 두번째는 가수인 artist로 뽑아내어 출력하였다.

'교육 > 스파르타코딩클럽 - 내일배움단' 카테고리의 다른 글

[5주차] AWS로 웹서비스 배포하기  (0) 2022.11.16
[4주차] 파이썬 Flask  (0) 2022.11.16
[2주차] JQuery와 Ajax  (0) 2022.11.16
[1주차] HTML, CSS, JS 기본  (0) 2022.10.19
'교육/스파르타코딩클럽 - 내일배움단' 카테고리의 다른 글
  • [5주차] AWS로 웹서비스 배포하기
  • [4주차] 파이썬 Flask
  • [2주차] JQuery와 Ajax
  • [1주차] HTML, CSS, JS 기본
뚝딱뚝딱2
뚝딱뚝딱2
  • 뚝딱뚝딱2
    개발도상국
    뚝딱뚝딱2
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 공부
        • Java
        • Spring Boot
        • LORA
      • Web
        • 인스타 클론 코딩
        • GPT 응답 API 서버
        • Spring Boot 예외 처리
        • 코테 준비용 서비스 만들기
      • DevOps
        • 쿠버네티스
        • 서버 만들기
      • 코딩테스트
        • 알고리즘
      • 교육
        • 스파르타코딩클럽 - 내일배움단
        • 혼자 공부하는 컴퓨터 구조 운영체제
      • 잡다한것
  • 블로그 메뉴

    • 홈
  • 링크

    • GITHUB
  • 공지사항

  • 인기 글

  • 태그

    클러스터
    쿠버네티스
    리액트
    티스토리챌린지
    예외
    mapstruct
    react
    스프링 부트
    Java
    백준
    클론코딩
    스프링부트
    인스타그램
    OpenAI API
    spring boot
    chat GPT
    REST API
    Entity
    MSA
    오블완
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
뚝딱뚝딱2
[3주차] Python 크롤링
상단으로

티스토리툴바