본문 바로가기
Python

[python] 네이버 블로그 아이디 크롤링 추출 엑셀 가공

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

python 네이버 블로그 아이디 크롤링 추출 엑셀 가공

오늘 네이버 블로쪽으로 아이디만 크롤링 했었던 거를 가지고 왔었던 건데 주로 판다스라고 있죠 판다스랑 정규식을 이용을 해서 네이버 블로아이디를 크롤링하는 그거를 따왔습니다.

 

네이버 블로그 아이디 크롤링 엑셀 파일 합치기

첫 번째는 엑셀 파일을 합쳐보는 거예요. 처음은 엑셀 파일에 있는 네이버 블로그가 있죠. 엑셀 파일을 처음에 합쳐보는 거고 두 번째는 엑셀 파일을 합친 엑셀 파일을 그 확인해보는 겁니다. 두 가지 파일에 데이터를 합쳤다 하면 행의 개수가 똑같아야 되잖아요. 행의 개수를 확인을 해봐야 되는 거죠.

 

import os
import pandas as pd
import re
blog_content_result_1 = pd.read_csv('C:/Users/tera/Desktop/blog_content_result.csv', encoding ='utf-8-sig')
blog_content_result_2 = pd.read_csv('C:/Users/tera/Desktop/blog_content_result_2.csv', encoding ='utf-8-sig')



blog_content_result = pd.concat([blog_content_result_1, blog_content_result_2], ignore_index=True) # 엑셀 csv 파일 합치기
blog_content_result.head()

 

네이버 블로그 아이디 크롤링 합친 엑셀 파일 확인

 

print(len(blog_content_result_1))
print(len(blog_content_result_2))
print(len(blog_content_result))

 

네이버 블로그 아이디 정규식 추출

 

그리고 난 다음에 정규식 있지 않습니까? 정규식으로 네이버 블로그 아이디만 추출해서 해보는 거죠. 그래서 블로그 아이디만 가지고 오는 겁니다. 그래서 의외로 그렇게 어려운 부분은 아닙니다. 이거는 저 같은 경우에는 이걸 왜 뽑아놨냐 한다면 블로그 아이디만 가지고 방문자의 수를 알 수 있는 방법이 있어요. 스마트 스토어나 아니면 네이버 블로그 협찬과 관련된 마케팅을 진행을 했었을 때 이런 블로그id가 유용합니다. 그래서 블로그 id만을 뽑아냈고 정규식이죠. 정규식으로 뽑아내서 그거를 담는 거죠.

blog_content_result['blogId'] = '' #컬럼 생성

for i in range(0, len(blog_content_result)) :
    try :
        blogId = blogId = re.search('https://blog.naver.com/(.+?)?Redirect=', blog_content_result.loc[i, 'URL']).group(1)
        blogId = blogId.replace('?', '')
        blog_content_result['blogId'].loc[i] = blogId  # (주의!) 컬럼에 넣을 시엔 반드시 반대로 해야된다.
    except :
        blogId = None
        blog_content_result['blogId'].loc[i] = blogId #(주의!) 컬럼에 넣을 시엔 반대로 해야된다. #네이버 블로그가 아닐시 null값 처리

blog_content_result['blog_link'] = 'https://blog.naver.com/' + blog_content_result['blogId']  #네이버 블로그 주소        



blog_content_result.head()

 

정규식 네이버 블로그 아이디 추출 확인

그런데 블로그 api 기준으로 검색을 해서 그걸 바탕으로 가지고 오는 건데 하나씩 단점도 있습니다. 왜냐하면 네이버 블로검색 영역에서는 티스토리라든가 기타 등등 네이버 블로이외의 것들도 노출이 되는 것들도 있어요. 그런 것을 필터링도 하는 기능도 집어넣었습니다. 그래서 정규식으로 블로그 아이드를 추출을 했던 거는 이게 다고요.

 

blog_content_result['blogId'].isnull().sum()

근데 저 같은 경우 네이버 블로그가 아니다 하면 그거를 null 값으로 집어넣습니다. 해서 null 값으로 집어넣은 것으로 어느 정도 되는지 그걸 한번 확인하는 거 수로 됐었고요. 최종적으로는 마지막으로 이제 네이버 블로그 아이디를 엑셀 파일에다가 저장을 하는 거죠. 이게 다입니다.

 

추출된 네이버 블로그 아이디 엑셀 파일 저장

이걸로만 한다면 아까 말씀드렸던 최종적인 네이버 블로아이디를 가지고 오게 되는 거죠. 의외로 그렇게 완전 어렵느냐 그렇게 어려운 것은 아닙니다. 값으로 되어 네이버 블로아이디만 가지고 오는데 티스토리 부분이나 이러한 것들은 다 제외를 해두고 가져오는 거죠.

 

왜냐하면 스토리 되어 있거나 아니면 네이버 블로그가 아닌 블로주소를 가진 것들은 다 널값수 처리로 돼서 가져온 거기 때문에 이거를 하게 된다면 네이버 블로아이디만 유니크한 값만 가지고 오게 될 겁니다. 참고를 한번 해보시고요 이렇게 해서 만들어 놓은 거니까 보시면 될 것 같습니다.

f = open('C:/Users/tera/Desktop/TEST/blog_id_lists.csv', 'w', encoding='utf-8-sig') # 엑셀파일에 넣기
f.write("blogIds"+ '\n')

flg_is_null = blog_content_result['blogId'].isnull()

for trg in list(blog_content_result.loc[~flg_is_null, "blogId"].unique()) :  #null 값을 제외한 (네이버 블로그를 제외한), 중복 처리 이후 블로그 ID만 긁자(일방문자 보기 위함)
    f.write(str(trg)+'\n')
    
f.close()
반응형

댓글