본문 바로가기
Python

[네이버] 파이썬 네이버 카페 크롤링

by 퍼포먼스마케팅코더 2017. 1. 9.
반응형

import urllib.request

import urllib.parse

from bs4 import BeautifulSoup


defaultURL = 'https://openapi.naver.com/v1/search/cafearticle.xml?' 

sort = '&sort=date' #date(날짜순), sim(정확도순)

start = '&start=1'

display = '&display=100'

query = '&query='+urllib.parse.quote_plus(str(input("검색어: "))) 

#검색어라는 문구를 출력하여 사용자에게 단어를 문자열로 입력받은 후 quote_plus 함수를 이용해서 단어를 인코딩(url에 한글입력 가능)


fullURL = defaultURL + sort + start + display + query


print(fullURL)


file = open("C:\\Python34\\naver_cafe1.txt","w",encoding='utf-8')


headers = {

    'Host' : 'openapi.naver.com' ,

    'User-Agent' : 'curl/7.49.1',

    'Accept' : '*/*',

    'Content-Type' : 'application/xml',

    'X-Naver-Client-Id' : 'Naver Client ID',

    'X-Naver-Client-Secret' : 'Naver Client Secret'

    } 

#HTTP 요청시 서버에 애플리케이션에 대한 정보를 넘겨주기 위한 변수


req = urllib.request.Request(fullURL, headers=headers) 

#http 요청을 하기 전 헤더 정보를 이요해 request 객체를 생성. urllib 모듈에서 헤더 정보를 서버에 전달시 사용하는 대표적인 방법

f = urllib.request.urlopen(req) 

#생성된 request 객체를 urlopen 함수의 인수에 전달하여 헤더 정보를 포함하여 서버에게 http 요청을 하게됨. 

resultXML = f.read( )

#서버로부터 받은 데이터를 읽음.

xmlsoup = BeautifulSoup(resultXML,'html.parser')

#읽어들인 xml 데이터를 이용하여 원하는 데이터를 가져오기 위한 뷰티풀 수프 객체를 생성 

items = xmlsoup.find_all('item')

#뷰티풀 수프 객체에서 우리가 필요한 데이터들이 존재하는 item 태그를 모두 가져와 저장

for item in items :

     file.write('카페제목 : ' + item.title.get_text(strip=True) + '\n')

     file.write('카페내용 : ' + item.description.get_text(strip=True) + '\n')

#for 문을 이용하여 title, description을 모두 공백 제거한 다음 텍스트 파일에 writㄷ 시키기.


file.close( )

#텍스트 파일 저장 후 종료


반응형

댓글