본문 바로가기
코딩

네이버 블로그 크롤링 하는 법 - 파이썬 웹 크롤링 -

by 김유로01 2022. 5. 25.
728x90
반응형

 

 

스크롤이 계속 내려가는 사이트 크롤링 하는 법

일반적인 사이트는 1페이지, 2페이지 이렇게 나뉘어 있는 경우가 많다. 하지만 어떤 사이트들은 페이지 구분 없이 스크롤을 내리면 내릴수록 계속해서 정보가 나오는 사이트들도 있다. 이런 사

breakmatrix.tistory.com

 

저번 포스팅에 이어서 블로그 주소를 가져왔다고 치고 다음 단계로 넘어가려 한다.

 

 

그랬더니 정보가 오기는 하는데 html 값으로 되어있어서 전혀 읽을 수가 없다. 

 

우선 가장 먼저 해야 할 일은 여기에 담겨있는 백 슬래시를 지워야 한다.

 

html 값이 넘어오면서 백 슬래시가 있는 경우가 있는데 파이썬이 읽는데 방해가 되기 때문에 가장 먼저 지우도록 하자.

 

지우는 함수는 replace() 이므로

 

 

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

 

에서

 

soup = BeautifulSoup(data.content.replace('\', ''), 'html.parser')

 

로 적는다면 실수

 

왜냐하면 파이썬에서 백슬래시는 이스케이프 문자로 쓰이기 때문에 이렇게 적으면 앞에 있는 따옴표를 문자 그대로 인식시켜주세요~라고 해버리기 때문에 오류가 발생한다.

 

따라서 단순히 백 슬래시를 표현하기 위해서는 백 슬래시를 두번 써야 한다. 그리하여

 

soup = BeautifulSoup(data.content.replace('\\', ''), 'html.parser')

 

로 적어야 하고 이는 data.content에 있는 '백슬래시' 를 ''으로 대체해주세요.라는 뜻이다.

 

하지만 또 이대로 출력하려고 하면 문자열 오류가 뜬다. 

 

replace 함수를 사용하려면 문자여야 하는데 문자가 아니기 때문에 다시 문자로 바꾸어줘야 한다.

 

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

 

이렇게 하면 html이 문자형태로 출력되게 된다. 실행 성공!

 

다시 돌아와서 크롤링하고 싶은 곳의 html 값을 찾아본다.

 

 

제목의 html 값을 찾아보니까

 

<a href="\&quot;https://blog.naver.com/kstyleok/222718814739\&quot;" class="\&quot;api_txt_lines" total_tit="" _cross_trigger\"="" data-cr-gdid="\&quot;90000003_0000000000000033DB136A13\&quot;" target="\&quot;_blank\&quot;" onclick="\&quot;return" goothercr(this,="" 'a="rvw*b.link&amp;r=36&amp;i=90000003_0000000000000033DB136A13&amp;u='+urlencode(this.href))\&quot;">해결할 수 없는 빈곤 - <mark>알베르 카뮈</mark> - [카빌리의 비참]</a>

 

이렇게 쭉 나오는 것을 확인할 수 있다. 그렇다면 이제 select 함수를 이용해 쉽게 정보를 가져올 수 있을 것 같다.

 

f = soup.select('a.api_txt_lines')
print(f[0].text)

 

텍스트를 불러와야 하기 때문에 텍스트를 붙였고 리스트로 쭉 나오기 떄문에 번호를 붙였다.

 

이렇게 출력을 해보면 제목이 나오는 것을 확인할 수 있다.

 

이렇게 블로그의 제목을 출력하는 것을 해보았다.

 

 

 

그렇다면 주소를 크롤링하는 것을 어떻게 할까?

 

f = soup.select('a.api_txt_lines')
print(f[0]['href'])

 

이렇게 뒤에 'href'를 리스트 형태로 붙이면 된다.

 

추가로 이미지를 얻는 것 역시 마찬가지 방법을 사용하면 된다. 

 

이미지 역시 해당하는 주소에 이미지가 저장되어 있기 때문이다. 

 

이렇게 어떤 이미지를 클릭하면 src 라는 속성에 주소가 저장되어있으므로 해당 리스트 값을 꺼내면 될 것이다.

 

 

f = soup.select('a.api_txt_lines')
print(f[0]['src'])

 

이렇게 하면 이미지도 크롤링 해올 수 있다

 

끝!

 

 

 

 

웹 크롤러 짤 때 유용한 팁 -soup.select()-

select 문법 soup.select('.class명') -> 클래스 찾아줌. 여기서 . 은 html 용어로 클래스를 말함. soup.select('#id명') -> id 찾아줌. soup.select('태그명') -> html 태그 찾아줌. html 태그는 아무것도 안 붙..

breakmatrix.tistory.com

 

 

 

웹에서 정보 뽑아먹기 - 웹 크롤러 만드는 법-

터미널 창에 pip install requests pip install bs4 하나씩 입력한다 그 후에 import requests from bs4 import BeautifulSoup 이렇게 코드를 입력해 놓으면 웹 크롤러 제작 기반 마련 성공이다. 굳이 설명하자면..

breakmatrix.tistory.com

728x90
반응형

댓글