작성
·
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 을 쓰긴 해야 하는데, 잘되기 까지는 고민을 많이 하셔야 합니다. 하지만 그 과정속에서 수강생님의 사고가 프로그래밍적 사고가 완벽하게 갖춰지지 않을까 해요.
감사합니다.