본문 바로가기

개발일지

네이버 지식인 질문 자동 답변 프로그램 개발일지

2020년 12월 15일 시작

지식인 질문 프로그램을 제작 도중

일단은 질문에 답을 하는 프로그램을 제작해보기로 했다

일단 생각한 로직은

키워드로 검색 후 검색된 제목을 찾아

제목에 특정 단어가 들어가거나 내용에 들어가면

질문에 답을 하는 것이다

로그인 -> 지식인 키워드 검색 -> 제목, 내용 인식 -> 답변

간단해 보이는 작업이다

한번 빠르게 시작해보도록 한다

일단은 모든 작업을 하기 위해 작업 환경을 결정해야 하는데

파이썬을 사용하고 selenium을 사용하기로 하였다

selenium 같은 경우에는 설정만 잘해준다면 실제 사용자와 동작이 매우 유사하기 때문이다

1. 로그인

전에 사용했던 로그인을 사용해보자

driver.get('https://nid.naver.com/nidlogin.login') 
driver.execute_script("document.getElementsByName('id')[0].value=\'" + vid + "\'") 
time.sleep(random.random()) 
driver.execute_script("document.getElementsByName('pw')[0].value=\'" + vpw + "\'") 
time.sleep(random.random()) 
driver.find_element_by_xpath('//*[@id="frmNIDLogin"]/fieldset/input').click()

이렇게 로그인을 하고 지식인으로 이동해서 키워드 검색 후 질문을 찾으면 될 것 같다

2. 키워드 검색

https://kin.naver.com/search/list.nhn?query=%ED%82%A4%EC%9B%8C%EB%93%9C&section=kin&sort=date

검색결과 주소 분석

키워드라는 단어로 검색했을 때 주소다.

주소를 보면 이렇하다 query에 검색하는 키워드가 들어간다.

우리는 query에 해당하는 값을 변경하여 주소를 변경하면 검색에 성공할 것이다

https://kin.naver.com/search/list.nhn?query=노트북&section=kin&sort=date

키워드 검색 결과 리스트

이렇게 해서 노트북으로 검색했을 때에 결과를 얻을 수 있다.

3. 제목, 내용 인식

제목, 내용을 선택하여 질문을 하면 될 것이다

조건들을 추가하여 정말 노트북 추천 질문에만 답을 할 수 있다

하지만, 이번에는 그냥 검색 결과에 모든 질문에 답을 해보도록 하겠다

selenium드라이버를 그대로 사용해도 되지만,

나는 beautifulsoup가 편하기 때문에 수프를 사용할 것이다

beautifulsoup는! pip install beautifulsoup4 (python3)로 다운로드할 수 있다

수프를 사용하기 위해 html구조를 살펴보자

검색 결과 리스트 항목 html 코드 분석

질문들을 살펴보면 리스트 형식으로 구현이 되어 있다

li는 각각의 질문들이고 li를 ul이 감싸고 있다

나는 ul를 선택한 다음, li를 선택하는 방법을 사용하겠다

수프로 html 소스코드를 가져온 다음, ul를 선택해보겠다

soup.select('.basic1')[0].select('li')

html 크롤링 결과

li태그가 리스트 형식으로 반환이 되었다

이제 우리는 반환된 결괏값을 씹고 뜯어서 맛보면 되는 것이다

일단은 for문을 사용하여 li값을 돌려주고, 제목과 내용, 질문 주소를 받아 질문에 답만 하면 된다

정말 간단하지 않은가?

4. 답변

마지막 단계인 답변이다

주소를 받아 주소를 이동하든, 드라이버로 클릭해서 이동하는 방법이 있을 수 있다

나는 주소를 받아서 주소로 이동하는 게 편하니 이 방법을 사용하겠다

코드를 보니 href에 질문의 주소가 있는 것 같다

href를 가져와 질문으로 이동해보기로 한다

검색 결과 확인 .gif

질문으로 잘 이동하는 것을 확인하고

이제 질문에서 답변을 하기로 한다

답변하기 버튼을 눌러 답변을 등록해주도록 한다


질문 답변하기

편한 데로 답변 내용을 복사해서 붙여 넣기 하면 될 것 같다

미리 답변에 작성할 내용을 작성했다

복사한 다음 붙여 넣기 후 답변 등록을 하면

계획했던 프로그램의 절차는 끝이 난다!

하지만 인생은 계획된 대로 흘러가지 않는 듯 프로그램도 그렇다

항상 이론은 완벽하다 에러를 만나기 전까진...

답변이 달려있는 질문에는 답변하기 버튼을 뜨지 않고

바로 답변 내용을 입력할 수 있다.

버튼을 못 차는 오류가 있어 버튼을 클릭해주는 구문은 try문 안에 넣어주었다

이렇게 해서 모든 오류는 끝이 날줄 알았다.

하지만 웬걸 질문을 등록하면 자동 입력 방지가 나타난다 OTL..

자동입력방지 등장

다음에는 자동 입력 방지문자를 입력해보도록 하겠다


네이버 지식인 자동입력방지 캡챠

2020년 12월 15일 시작

텐서 플로우를 사용해서 제작했으나..

제작 과정을 공개하는 것이 꺼려져 결과물만 공개

 

자동입력방지 해결 결과

지식인 편은 이렇게 종료하겠습니다

다음에는 갑자기 든 생각인데 서로 이웃추가를 제작하지 않을까 싶어요

네이버 지식인 편은 이번 포스팅으로 마치겠습니다.


본 내용은 프로그래밍을 기록하기 위한 자료입니다.
프로그램을 공유하지 않습니다.
참고용으로만 사용해주시면 됩니다.

프로그램 구매, 주문제작은 아래 링크로
문의해주시면 감사합니다
https://open.kakao.com/o/sOjk3Qxc