Python 크롤링 기초

HGY·2023년 6월 22일
0

Python

목록 보기
12/13

크롤링

requests 라이브러리

서버에게 데이터를 요청 및 응답받기 위한 라이브러리

import requests as req
  • 정보 가져오기
res = req.get('https://www.naver.com/')

// <Response [200]>번대 : 성공적으로 요청 및 응답을 받았다는 의미
// <Response [400]>번대 : 클라이언트(요청) 부분에서 오류 발생
// <Response [500]>번대 : 서버(응답) 부분에서 오류 발생

우회 접속 방법

  1. 개발자모드(f12)에서 network클릭
  2. f5버튼으로 새로고침
  3. document 타입의 html 문서 접근
  4. Headers 속성 맨 아래 User-Agent 값 복사
  5. 파이썬 코드에서 딕셔너리 형태로 넣어서 get 메소드의 headers 값 대입

BeautifulSoup 라이브러리

컴퓨터가 이해할 수 있는 객체로 변환해주는 라이브러리

from bs4 import BeautifulSoup as bs
  • 정보 변환
// bs(parsing 할 html문서, 'parsing할 방법')
// lxml : 빠르고 관대한 parsing방법

soup2 = bs(res.text, 'lxml')

select

원하는 페이지의 html 문서 중 태그를 선택하여 가져오는 기능
css선택자 selecter와 같이 사용한다
정보 호출시 list 자료형으로 생성된다

// a태그 중에서 클래스가 tab인 경우만 가져오기
// select : 여러가지 요소를 복수형(list)으로 가져온다.

soup2.select('a.tab')
song = melon_bs.select('div.ellipsis.rank01>span>a')
// ellipsis와 rank01 사이에 온점을 찍지 않으면 빈 리스트 출력
// 선택자 이름 안에 공백은 자손 선택자를 의미하기 때문에
// 원하지 않는 공백은 온점(.)으로 대체해주어야한다

iframe

iframe을 통해서 다른 서버에 있는 리뷰 데이터를 보여주기만 하기 때문에
실제 데이터가 저장되어 있는 iframe 주소로 찾아가서 contents를 추출
f12 개발자도구 > iframe 검색(ctrl + f) -> 실제 사용되고있는 iframe 찾기!
-> src 속성을 활용해서 진짜 데이터가 있는 서버의 url 수집

데이터 전처리

  • .text()
    여는 태그와 닫는 태그 사이에 있는 컨텐츠만 가져오는 기능

  • strip()
    앞, 뒤 공백 없애기

  • .replace()
    순수한 리뷰 데이터만 출력

// 만약(if) 리뷰에 '네이버 페이 구매평' 이라는 글자가 있는가? -> 조건문
// 있다면 글자를 없애고, 없다면 넘어가기
// .replace( , ) 앞은 대체하고 싶은 문자열, 뒤는 대체할 값

if '네이버 페이 구매평' in naver_re :
        naver_re = naver_re.replace(naver_re[-38:],"")

워드 클라우드

!pip install wordcloud
from wordcloud import WordCloud
import matplotlib.pyplot as plt
profile
바보 개발자 지망생

0개의 댓글

관련 채용 정보