강의

멘토링

커뮤니티

Inflearn Community Q&A

iamjaylee2195322's profile image
iamjaylee2195322

asked

[Renewed] Python Introduction and Web Scraping Basics Bootcamp [Python, Web, Data Understanding Fundamentals] (Updated)

네이버 카페 크롤링 문의!

Written on

·

990

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에서 진행 되나요?!

웹-크롤링python

Answer 1

1

funcoding님의 프로필 이미지
funcoding
Instructor

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

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

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

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

감사합니다.

iamjaylee2195322's profile image
iamjaylee2195322

asked

Ask a question