크롤링 기본 흐름

2019. 8. 10. 18:13파이썬

728x90

크롤러 : 사람처럼 웹에 접속해서 데이터를 받아오는 프로그램

1) Requests or Selenium : 웹페이지를 요청하는 라이브러리

2) BeautifulSoup : 요청하여 받아온 결과를 파이썬에서 사용할 수 있는 타입으로 변환.

예를들어 requests로 가져온 결과물이 html이라면 BeautifulSoup(html, 'html.parser')라고 씀.
두번째 인자는 파서(원시코드인 순수문자열 객체를 해석할 수 있도록 분석해주는 것)이다.
파이썬에서 사용되는 파서에는 3가지(lxml, html5lib, html.parser)가 있다.

import requests as req
from bs4 import BeautifulSoup as bs

url = "https://blog.naver.com/dearmy_xxx/221554576825"
res = req.get(url)

bs(res.text, 'html.parser')

type(res.text)
unicode

type(res.content)
str

res.text와 res.content의 차이?

둘다 문자열로 반환하긴 하는데, .text는 진짜 String 문자이고 .content는 유니코드 형식의 문자이다.
크롤링 결과물에서 .text의 결과물에서는 문자가 uc5c5 이런식으로 u 어쩌고저쩌고로 나온다.
.content의 결과물에서는 문자가 x8b 이런식으로 나온다.

우리가 이미지를 가지고 올 때 '문자를 어떤 형식으로 가져오냐'는 문제가 영향을 미친다.

이미지는 사실 숫자로 이루어져 있는 데이터인데, 유니코드로는 표현이 되지만 일반 String으로는 표현이 안된다.

그러니까 .content를 하면 현재 페이지의 이미지든 영상이든 이에 관련된 정보를 몽땅 가져올 수 있다.

하지만 우리가 보는 웹페이지에는 실제 이미지 파일이 올라와있는 것이 아니라, 이미지의 주소를 참고해서 보여주기 때문에( <img src 이미지주소> 코드를 써서 이미지를 표현한다는 말임) 굳이 .content를 쓰지않고 .text를 쓴다.

728x90
반응형