인프런 커뮤니티 질문&답변

allrounder님의 프로필 이미지
allrounder

작성한 질문수

파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)

네이버 카페 크롤링 문의!

작성

·

822

0

안녕하세요 드디어 첫 강의 완강 했습니다 :)

좋은 강의, 재밌게 이끌어 주셔서 감사합니다.

가끔씩 박수 쳐주실 때 (?) 은근 힘이 나더라구요 ㅎㅎ

다름이아니라, open api 에서 카페글 크롤링을 해보고자 했습니다.

키워드는 '제네시스'를 넣어서 진행을 해보았는데요,

우선 open api에 설명되어 있는 부분은 강사님이 네이버-쇼핑에서 알려준 것 활용하여 하다 보니, 다 얻어졌습니다.

import requests

import pprint

client_id = "아이디"

client_pw = "비번"

naver_api = 'https://openapi.naver.com/v1/search/cafearticle.json?query=제네시스&display=100'

header_params = {"X-Naver-Client-Id":client_id, "X-Naver-Client-Secret":client_pw}

res = requests.get(naver_api, headers=header_params)

data = res.json()

for item in data['items']:

    print(item['title'], item['cafename'], item['description'])

    

이제 한 발 더 나가서, 지마켓 사례로 보여주신 크롤링 내 크롤링을 해보고자 했습니다.

url 들어가서 판매업자 텍스트 가져오듯, 카페 Url 들어가서 요약된 description이 아닌, full article을 가져오고자 했어요.

import requests

import pprint

client_id = "아이디"

client_pw = "비번"

naver_api = 'https://openapi.naver.com/v1/search/cafearticle.json?query=제네시스&display=100'

header_params = {"X-Naver-Client-Id":client_id, "X-Naver-Client-Secret":client_pw}

res = requests.get(naver_api, headers=header_params)

data = res.json()

for item in data['items']:

    res2 = requests.get(item['link'])

    soup2 = BeautifulSoup(res2.content, 'html.parser')

    article = soup2.find_all('div.article_container')

    print(item['title'], item['cafename'], article.get_text()))

    

문제는, 여기서 select를하든, find_all을 하든, 무엇을 하든 아무 내용을 가져오질 못합니다 ㅠㅠ

article_container에 본문 전체 내용이 있지만, 별도로 진행을 해보아도 결과값은 '[]'로 뜨네요..

그래서, 한 줄만 먼저 따와보기로 했습니다.

import requests

from bs4 import BeautifulSoup

res = requests.get('https://cafe.naver.com/imyoona/1472807')

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

data = soup.find_all('div>p')

print(data) >>> [] 출력

이렇게 한 줄 씩 해봐도 안되었구요,

댓글 가져오기도 시도해보았습니다만, 역시나 안됩니다 ㅠㅠ

네이버에서 막은 걸까요?

제 코드가 잘못된 걸까요?

저는 사실 최종적으로 '여러 페이지'의 '모든 텍스트/댓글'을 데이터 마이닝 하여서,

'감성분석'을 하는 것이 목표입니다.

제네시스 키워드로 작성된 글에 가장 많이 나오는 단어가 '고급' '현대차' '흉기차' 등이 있다면,,

키 워드 비율별로 차트를 만들고, 시각화 하는 것이 목표인데 당장 네이버에서 막혔네요...ㅎ

강사님의 다른 강의들도 (최근 오픈하신거 제외하고^^;;) 신청 했는데, 혹시 'selenium' 강의를 들으면 이런 부분까지 진행할 수 있는 걸까요~?

질문이 길어졌는데 3가지로 요약하자면,

1. 제 코드가 잘못된 것인지, 네이버가 막은 것인지 궁금합니다.

2. 네이버가 막은 것이라면, 혹시 어떻게 해결해야 할까요? 방법은 없는 걸까요?

3. 제 최종 목표인 '모든 텍스트를 데이터마이닝 하여서 감성 분석'하는 내용은 혹시 다음 selenium에서 진행 되나요?!

답변 1

1

안녕하세요. 박수 많이 쳐야겠어요 ㅎㅎ 이게 은근 힘이 되신다니... 어쨌든 저는 제가 의도한 대로 logical 하게 수강자님이 문제를 파악하는 방식을 따르신데 대해서, 정말 박수를 드리고 싶습니다.

logical 하게 파악하려 하신 부분 정말 개발자로 잘 성장하실 것 같아요.

말씀하신 부분은 selenium 으로 진행해야 합니다. 오른쪽 클릭해서, 해당 내용을 찾아보시면 없으실꺼예요. 다 동적 페이지로 구성되서 그렇고요. selenium 으로 한다해도 고생을 좀 하실 수 있어요.

근본적으로 네이버는 크롤링을 매우 싫어해서, 크롤링이 안되도록 최대한 고민을 해놨기 때문에, selenium 을 쓰긴 해야 하는데, 잘되기 까지는 고민을 많이 하셔야 합니다. 하지만 그 과정속에서 수강생님의 사고가 프로그래밍적 사고가 완벽하게 갖춰지지 않을까 해요.

감사합니다.

allrounder님의 프로필 이미지
allrounder

작성한 질문수

질문하기