본문 바로가기
Python

[파이썬] 네이버 블로그를 메일 주소 자동 추출 리스트업

by 퍼포먼스마케팅코더 2022. 8. 2.
반응형

안녕하세요. 오늘은 보아하니까 여러분들 궁금하지 않으세요. 
네이버 블로그를 잘 아시겠지만 먼저 네이버 블로그를 블로그의 끝에 있는 게 있지 않습니까 그게 바로 여러분들의 블로아이디 그런 아이디를 바탕으로 해서 아이디 뒤에 골뱅이 네이버 닷컴만 붙이면 바로 여러분들의 메일 주소가 나오는 거예요.
오늘은 네이버 블로그를 통해서 메일 주소로 이걸 자동으로 추출을 해서 엑셀 파일로 리스트 업 하는 것까지를 파이선 코딩으로 만들어 놨습니다. 

 

파이썬 네이버 블로그를 메일 주소 자동 추출 리스트업

이 코딩에 대해서 간 설명을 드릴 건데 먼저 제일 첫 번째로 해야 될 게 네이버 블로검색 api가 있습니다. 어떤 특정 검색어를 치면 그에 따라서 블로리스트가 약 100개 정도가 나오거든요. 이거를 먼저 데이터 프레임 여기 안에다가 담아두는 거죠. api에 대한 정보를 블로주소만 가지고 와서 보면 그걸 중복 처리를 해야 되지 않습니까 그걸 중복 처리를 해요.

import urllib.request
import json
from pandas.io.json import json_normalize
import hashlib
import hmac
import base64
import pandas as pd
import re

#네이버 블로그 검색 API 내에 블로그 리스트 담기

keyword = '자석거치대' #키워드검색
client_id = "" #클라이언트 ID
client_secret = "" #클라이언트 시크릿
encText = urllib.parse.quote(keyword)

blog_url = "https://openapi.naver.com/v1/search/blog?query=" + encText + '&display=100&start=1' #블로그 건수
request_2 = urllib.request.Request(blog_url) 
request_2.add_header("X-Naver-Client-Id",client_id)
request_2.add_header("X-Naver-Client-Secret",client_secret)
response_2 = urllib.request.urlopen(request_2)
rescode_2 = response_2.getcode()
if(rescode_2==200):
    response_body_2 = response_2.read()
    json_str_2 = response_body_2.decode('utf-8')
else:
    print("Error Code:" + rescode_2)
json_object_2  = json.loads(json_str_2) #json 변환
df_2 = pd.DataFrame(json_object_2['items'])
print(len(pd.unique(df_2['bloggerlink'])))  #중복 처리 개수

이거를 그중에서 블로영역 내에 검색 결과니까 여기서 네이버 블로그만 다시 가지고 옵니다. 티스토리나 기타 다른 블로주소는 다 빼는 거죠. 오로지 네이버 블로그만이 가지고 오는 거죠. 

#블로그 ID를 중복 처리해서 가져오기

#import re

blogIds = [] #블로그 ID 리스트 담을 것들

for blog_urls in pd.unique(df_2['bloggerlink']) : #블로그 ID 가져오기(중복 제거)
    if blog_urls.find("https://blog.naver.com") != -1 : #블로그 URL 내 blog.naver.com 이 있을 경우
        #print(blog_urls) #프린트
        blog_id = blog_urls.replace("https://blog.naver.com/", "")  #블로그 주소는 없애기
        blogIds.append(blog_id)
    else :
        pass
print(blogIds) #완료

이렇게 해서 가지고 왔다가 그런데 여러분들이 궁금하시는 거는 이 네이버 블로그에 방문자 수가 궁금하지 않습니까? 방문자 수를 블로아이디를 가지고 와서 그거를 쳐서 이 방문자 수를 확인을 하는 거죠. 그렇게 해서 추가적으로 네이버 아이디와 블로방문자가 맞는지 매칭을 하고 최종적으로는 데이터 프레임 형식으로 블로그 아이디와 그다음에 블로그 방문자 수 이거를 데이터 프레임 형식으로 만들어 놓습니다.

#블로그의 방문자 수를 알아보기
 
import requests
from    bs4      import BeautifulSoup
import xml.etree.ElementTree as ET
import datetime
import time

blog_visitors =[]

for blogId in blogIds :
    url = 'https://blog.naver.com/NVisitorgp4Ajax.nhn?blogId={}'.format(blogId) 

    try :
        raw = requests.get(url)  #협찬
        #html = BeautifulSoup(raw.text, 'html.parser') #긁기
        format = '%Y%m%d'
        today = datetime.datetime.now()  #오늘날짜
        yesterday = today - datetime.timedelta(days=+1) #어제날짜
        str_datetime = datetime.datetime.strftime(yesterday,format) #어제날짜변환

        for node in ET.fromstring(raw.text) :
            if node.get("id") == str_datetime :
                print(str(url) +' ,'+node.get("cnt"))
                uv = node.get("cnt")
                #print(uv)
                blog_visitors.append(uv)
            else :
                pass
    except :
        uv = '0'  #아예 없을 경우 0으로 처리
        blog_visitors.append(uv) #0을 넣자
    #print(str(blogId) + ',' + str(blog_visitors))
    time.sleep(2) #2초간
print("최종완료되었습니다.")

컬럼 이 두 개만 만들어 놓기는 하는데 더 제대로 한번 보자라고 해서 제가 추가적으로 더 만들어 놨었던 게 네이버 이메일 주소와 그다음에 블로주소 있지 않습니까 그것도 추가적으로 넣어놨어요. 

for blogid, blog_visitor in zip(blogIds, blog_visitors) : #블로그ID, 방문자수 매칭 확인
    print(blogid +','+ blog_visitor)

최종적으로 이 뽑히는 거는 네이버 블로그에 방문자 수 내림차순 정렬로 해서 최종적으로는 엑셀 파일로 자동으로 뽑아 나올 수 있게끔 그렇게 해서 설정을 해놨습니다. 이것에 따른 이점은 뭐냐 무슨 활용도로 이걸 해야 되느냐라는 걸로 보시면 여러분들에 따라서 여러분들 바쁘잖아요.  스마트 스토어도 운영도 하시고 그다음에 기타 마케팅이나 이런 것들 이제
협차나 이런 것들을 하고 싶은데 흔히 말하면 크레이터와 컨택이 힘드실 겁니다. 

#데이터 프레임으로 전환

import pandas as pd

df_blog = pd.DataFrame( zip(blogIds, blog_visitors),  #2개 컬럼시 zip 붙임
                       columns=['blogid', 'blog_visitors'])  #컬럼 이름

#df_blog.sort_values(by='blog_visitors', ascending=False)
df_blog['blog_visitors'] = df_blog['blog_visitors'].astype('int')  #정수로 변환
df_blog['naver_email'] = df_blog['blogid'] + str('@naver.com') #네이버 이메일 주소 입력
df_blog['blog_urls'] = str('https://blog.naver.com/') +  df_blog['blogid']

blog_summary = df_blog.sort_values(by='blog_visitors', ascending=False) #방문자수 내림차순 정렬
blog_summary.to_csv('C:/Users/tera/Desktop/test.csv', index=False)  #엑셀파일 내보내기

특히나 그런 크리에이터 분들과 같이 협업을 좋은 분들과 협업을 하려고 하면 이거 힘들잖아요. 이게 그리고 그런 사람들이 일일이 검색을 해서 찾는 게 이게 수동으로 시간이 오래 걸립니다. 그러한 시간을 단축시키고자라고 해서 이제 이렇게 해서 만들어놨던 거고요 해서 이거 활용을 해보시면 이게 편하실 거예요. 

 

이러한 것 여러분들 중에서도 이러한 것이 있구나라는 것만 이해만 해주시고 넘어가시면 될 것 같습니다. 한마디로 네이버 요약을 해서 말씀드리자면 네이버 블로협찬이나 아니면 뭐 컨택을 하고 싶다거나 뭐 그런 게 있으시면 이런 걸 네이버 블로안에서 방문자 수를 확인을 하고 메일 주소를 자동으로 추출을 해서 엑셀 파일로 뽑아서 볼 수 있는 그거라고 보시면 될 것 같습니다. 의외로 간단하고 활용도가 높을 수 있는 이런 것이니까 많이 활용을 해보시는 것도 나쁘지 않을 것 같습니다.

반응형

댓글