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( )
#텍스트 파일 저장 후 종료
'Python' 카테고리의 다른 글
[네이버]Open API 없이 네이버 뉴스 웽 크롤러 (0) | 2017.01.09 |
---|---|
[네이버] 웹문서 섹션 크롤링 (0) | 2017.01.09 |
[네이버]뉴스 크롤링 (0) | 2017.01.08 |
[파이썬3] beautiful soup 예제 (0) | 2017.01.06 |
[파이썬3] lxml 설치하기 (0) | 2017.01.06 |
댓글