python(15) open API + docx

hyukstory·2020년 8월 28일
0

python

목록 보기
21/35

네이버 블로그 open API 로 크롤링한 결과를
docx 파일로 저장하기
(한 페이지에 5건씩 보여지게)

def naverBlogOpenAPI_to_docx(x,y,z,m) :
    
    # x = 검색어
    # y = start_point
    # z = display_count
    # m = word 파일 내에서 페이지 나누는 기준 건수
    
    import requests
    from urllib.parse import urlparse
    import docx
    
    # docx 파일 생성
    wordfile = docx.Document()
    
    # 헤더 생성
    wordfile.add_heading('open API 활용 네이버 블로그 검색 결과 크롤링', 0)
    wordfile.add_heading("검색어 : " + str(x) + "\t/" + "검색 결과 : 총 " + str(y * z) + "개", 1)
    
    keyword = str(x)
    
    i = 1
    cnt = 0   
    
    for i in range(1, y+1) : 
        if i == 1 :
            url = "https://openapi.naver.com/v1/search/blog?query=" + \
                keyword + "&display=" + str(z) + "&start=" + str(i)
        elif i > 1 :
            url = "https://openapi.naver.com/v1/search/blog?query=" + \
                keyword + "&display=" + str(z) + "&start=" + str((i-1)*z + 1)
        
                
        result = requests.get(urlparse(url).geturl(),
                             headers={"X-Naver-Client-Id":"________",
                                      "X-Naver-Client-Secret":"_______"})
        
        json_data = result.json()
        
        
 
       
        for item in json_data['items']:
            cnt += 1
            
            globals()['blog_result{}'.format(cnt)] = \
                wordfile.add_heading(item['title'].replace("<b>", "").replace("</b>", ""), 4)
            globals()['blog_result{}'.format(cnt)] = \
                wordfile.add_paragraph(item['description'].replace("<b>", "").replace("</b>","") + "\n")
              
            
            if (cnt) % m == 0 :
                next_page = globals()['blog_result{}'.format(cnt)].add_run()
                next_page.add_break(docx.text.run.WD_BREAK.PAGE)
        
    wordfile.save("C:/Users/student/Desktop/python/P_3week/연습(openAPI+docx).docx")
profile
문돌이의 고군분투 개발 공부

0개의 댓글