728x90
반응형
SMALL
네이버 클라우드 플랫폼
네이버 오픈API 서비스는 24시간 365일 무중단으로 운영되고 있다. 오픈API 오류에 신속하게 대응하기 위해 매 10분 단위로 자동으로 모니터링하고 있다. (https://developers.naver.com/main/)
▪ Open API : 누구나 사용할 수 있도록 공개된 API ▪ API (Application Programming Interface) : 데이터를 요청하여 주고 받기 위한 방식 또는 규격 |
Open API Key
[Products] → [서비스 API] → [데이터랩] → [Open API 신청] → [Application 등록] → [내 에플리케이션] → Client ID 및 Client secret 확인한다.
example code
# scrapy 설치
!pip install scrapy
import os
import sys
import urllib.request
client_id = "open api에서 발급받은 client id"
client_secret = "open api에서 발급받은 secret 번호"
# 검색어
encText=urllib.parse.quote("배트맨")
url = "https://openapi.naver.com/v1/search/blog?query=" + encText
request = urllib.request.Request(url)
request.add_header("X-Naver-Client-Id", client_id)
request.add_header("X-Naver-Client-Secret", client_secret)
response = urllib.request.urlopen(request)
rescode = response.getcode()
if(rescode == 200):
response_body = response.read()
print(response_body.decode('utf-8'))
else:
print("Error Code:" + rescode)
body=response_body.decode('utf-8')
body
import re
titles = re.findall('"title":"(.*?)",\n\t\t\t"link"',body) # \n 줄바꿈
print('<<제목 모음>>')
print(titles)
print('총 제목 수: ', len(titles), '개')
<<제목 모음>>
['[<b>배트맨<\\/b> 코믹스] <b>배트맨<\\/b> : 올빼미 법정 & 올빼미 도시', 'DC 슈퍼맨+<b>배트맨<\\/b> 퓨전 캐릭터 재등장', '영화 더<b>배트맨<\\/b> 출연진 등장인물 배트모빌 번역 흑', '가장 인간적인 <b>배트맨<\\/b>의 탄생 : 영화 <더 <b>배트맨<\\/b>> 후기 (스포 有)', 'DCU 1180억 영화 배트걸 폐기 <b>배트맨<\\/b> 레슬리 그레이스 마이클... ', '<b>배트맨<\\/b> 아캄시티 명작 액션 어드벤처 PC게임 추천 시리즈', 'DC 신작 '더 <b>배트맨<\\/b>' 관련 추가 소식(스포)', '#반다이#<b>배트맨<\\/b>#BANDAI#BATMAN#프라모델#', '<더 <b>배트맨<\\/b>> - 정의(正義)를 정의(定義)하다', 'DC 영화 더 <b>배트맨<\\/b> 다크나이트 각본가가 감상평을 말하다']
총 제목 수: 10 개
links = re.findall('"link":"(.*?)",\n\t\t\t"description"',body)
print('\n<<링크 모음>>')
print(links)
print('총 링크 수: ', len(links), '개')
<<링크 모음>>
['https:\\/\\/blog.naver.com\\/zjwalangz\\/222850168870', 'https:\\/\\/blog.naver.com\\/tomstrong\\/222875563181', 'https:\\/\\/blog.naver.com\\/dongi0508\\/222628986052', 'https:\\/\\/blog.naver.com\\/siat25\\/222717152284', 'https:\\/\\/blog.naver.com\\/okjoa012\\/222841280487', 'https:\\/\\/blog.naver.com\\/melt2092\\/222883806954', 'https:\\/\\/blog.naver.com\\/connell3\\/222669118516', 'https:\\/\\/blog.naver.com\\/jegid\\/222859173438', 'https:\\/\\/blog.naver.com\\/newballight\\/222661207518', 'https:\\/\\/blog.naver.com\\/ptj0969\\/222729227769']
총 링크 수: 10 개
# 링크 부분에서 필요없는 부분 제거
blog_links = []
for i in links:
a = i.replace('\\', '')
b = a.replace('?Redirect=Log&logNo=', '/')
blog_links.append(b)
print(blog_links)
print('생성된 링크 갯수:', len(blog_links),'개')
['https://blog.naver.com/zjwalangz/222850168870', 'https://blog.naver.com/tomstrong/222875563181', 'https://blog.naver.com/dongi0508/222628986052', 'https://blog.naver.com/siat25/222717152284', 'https://blog.naver.com/okjoa012/222841280487', 'https://blog.naver.com/melt2092/222883806954', 'https://blog.naver.com/connell3/222669118516', 'https://blog.naver.com/jegid/222859173438', 'https://blog.naver.com/newballight/222661207518', 'https://blog.naver.com/ptj0969/222729227769']
생성된 링크 갯수: 10 개
# 크롤링 결과를 data frame으로 저장
import pandas as pd
df = pd.DataFrame({'제목':titles, '링크':blog_links})
df
# 블로그 본문을 긁어오기 위한 웹페이지 크롤링
from bs4 import BeautifulSoup
from selenium import webdriver
from urllib.request import urlopen
import urllib.parse
# 접속하고자하는 url
url = "https://movie.naver.com/movie/bi/mi/basic.naver?code=154282#"
# Chrome Driver
driverPath = 'chromedriver.exe'
# Open Chrome
driver=webdriver.Chrome(driverPath)
driver.get(url)
html = driver.page_source
content = BeautifulSoup(html,'html.parser')
print(content.text)
print(content.prettify())
content.title
<title>더 배트맨 : 네이버 영화</title>
content.find_all('a')
content.find_all('div')
# 영화 소개 부분 데이터 크롤링
content.find_all(class_='con_tx')
# 이미지 크롤링
img = content.find_all("div", class_='poster')
img
# for larger size
img = img[1]
img
img_url = img.find("img")["src"]
img_url
urllib.request.urlretrieve(img_url, img.find("img")["alt"] + '.jpg')
# 블로그 링크 리스트를 이용한 블로그 본문 크롤링
# 네이버 포스트가 아닌 링크를 제거
blog_links.pop(4)
728x90
반응형
LIST
'App Programming > Web Crawler' 카테고리의 다른 글
[Web Crawler] 네이버 영화 댓글 감정 분석과 예측 (0) | 2022.11.24 |
---|---|
[Web Crawler] 네이버 블로그 / 뉴스 크롤링 (0) | 2022.09.29 |
[Web Crawler] 네이버 이미지 수집용 웹 크롤러 만들기 (0) | 2022.08.28 |
[Web Crawler] 크롬 드라이버 (Chrome Driver) (0) | 2022.08.28 |
[Web Crawler] 아마존 닷컴 베스트셀러 상품 정보 수집용 웹 크롤러 만들기 (0) | 2022.03.03 |