본문 바로가기

개발일지

네이버 서로이웃 자동 추가 프로그램 개발일지

2020년 12월 19일 시작

블로그에 글을 작성하니 블로그 활성화가 눈에 들어오기 시작했다

활성화 방법 중 하나 일 것 같은 서로 이웃부터 시작하기로 했다 (내 생각이다)

 

일단은 이것도 마찬가지로 네이버에 로그인을 해야 하니

셀레늄을 사용하고 로그인 코드는 이전 포스팅(아래 링크)에서 확인할 수 있다

 

로그인을 한 후 블로그 홈으로 접속해보자

네이버 블로그 홈

여기에서 블로그들의 아이디를 가져와 서로 이웃을 추가해보도록 하겠다

일단은 일상. 생각을 주제로 포스팅을 하는 블로거를 선택했다

 

마찬가지로 셀레늄과 beautifulsoup를 이용하여 블로거 아이디를 크롤링해보겠다

블로그 홈 html 코드 분석

크롤링하기 전 html 코드를 분석한다

이번에는 list형식이 아닌 div형식으로 되어있다

일단은 list_post_article의 클래스 명을 선택해보겠다

클래스명을 선택한 다음 블로거의 아이디를 가져와야 한다

블로그에 주소를 살펴보면 blog.naver.com/아이디 형식이다

이러한 방법을 이용해 블로그 주소를 가져오면 된다

 

html 태그 분석 href가져오기

ng-href태그에 블로그 주소가 있는 것을 확인할 수 있다

for li in soup.select('. list_post_article'):
href = li.select('.desc_inner')[0].attrs['href'] print(href)

href 크롤링 결과

크롤러 결과를 얻을 수 있었다

우리가 필요한 건 blog.naver.com/아이디에 해당하는 부분이니

split를 하든 정규식을 사용해도 되는데 나는 split을 사용하도록 하겠다

for li in soup.select('.list_post_article'):
href = li.select('.desc_inner')[0].attrs['href'].split('.com/')[1].split('/')[0] print(href)

이렇게 변경해주면 아이디만 잘 가져오는 것을 확인할 수 있다

 

이제는 서로 이웃 추가를 하면 된다

서로 이웃을 추가하는 동작을 구현하기 위해 실제로 서로이웃을 추가해보기로 한다

이웃추가 예외처리 확인

마침 정말 좋은 예가 나온듯했다

내가 원하는 것은 서로 이웃인데 초록매실님 블로그는 서로 이웃이 신청이 되지 않는다

이것을 기억해 둔 뒤 나중에 예외처리를 하면 될 것 같다

다시 돌아와서 주소를 자세히 보면 https://blog.naver.com/BuddyAdd.nhn?blogId=

blogid 값의 해당 블로거 아이디를 입력하면 되는 것 같다

 

나는 주소이동이 편하니 주소이동을 해보도록 하겠다

주소이동을 하려고 보니 네이버에서 막은듯해 보였다

아무리 주소이동을 해봐도 무반응이다

이러면 곤란해

이러면 곤란해

나는 다시 다른 해결방안을 찾아야 한다

 

생각해보면 블로그에 접속 후 서로 이웃 버튼을 눌러서 추가할 수 있다

이웃추가 버튼

생각한 방법대로 이루어졌으면 하는 바람이다


2020년 12월 19일 오후

모바일 버전으로 이웃추가를 하면 정말 좋을 듯하다

pc버전은 사용자가 레이아웃을 변경해두면 많은 변수가 생길듯한데

모바일 버전은 아래와 같이 지정되어있어 변수를 최소화할 수 있을 것 같다

모바일 이웃추가

다시 아이디를 가져와서 블로그로 이동하도록 하자

naver.get('https://m.blog.naver.com/PostList.nhn?blogId=' + href)

이웃 추가를 클릭해서 해보자

이웃 추가를 클릭해서 페이지를 이동해보니 여기는 주소가 pc버전에서 보던 주소와는 달랐다

모바일 이웃추가 주소분석

여기는 주소이동을 할 수 있을 것 같아 시도해보았다

정상적으로 셀레늄으로 주소이동이 되었다

 

이 방법으로면 다시 처음으로 돌아가 아이디만 크롤링해서 주소이동을 하면 될듯하다

이웃추가 예외처리 확인하기

주소 이동 테스트를 해보던 중 이런 문구가 뜨게 된다

주소 이동에는 오류가 없지만 서로 이웃을 추가하는 동작에서는 오류가 날것이 뻔했다

이 부분도 기억해두고 예외처리를 해주면 될 것 같다

이웃추가하기

이웃 추가를 위해 서로 이웃을 누르고 추가를 눌러주면 될 것 같다

전에 서로 이웃이 금지된 블로그도 있으니 서로 이웃을 선택되는지 예외 처리하고

넘어가면 될 것 같다

try:
    naver.find_element_by_id('bothBuddyRadio').click() #서로이웃 라디오
except:
    continue

이렇게 예외처리를 해주었다

오류가 발생하면 for문에 continue를 하여 처음으로 돌아갈 것이다

try문 밑으로 정상 작동하는 구문들을 써주면 될 것 같다

 

서로이웃추가 멘트 작성

서로 이웃을 클릭했으면 아래 서로 이웃 신청 멘트를 작성하면 된다

멘트 작성 html 코드 분석

이 부분에 xpath를 가져와서 사용하면 될 것 같다

naver.find_element_by_xpath('//*[@id="buddyAddForm"]/fieldset/div/div[2]/div[3]/div/textarea').clear() 
naver.find_element_by_xpath('//*[@id="buddyAddForm"]/fieldset/div/div[2]/div[3]/div/textarea').send_keys('서로이웃 추가해요!')

 

이렇게 작성하면 될 것 같다

나는 조금 더 멘트를 길게 쓰기 위해 텍스트 파일을 만들어 텍스트 파일에 있는 내용으로 작성하려고 한다

서로이웃추가 완성!

이렇게 네이버 서로 이웃 자동 추가 프로그램이 완성되었다

끝.

 

https://open.kakao.com/o/sOjk3Qxc