본문 바로가기

개발일지

네이버 지식인 질문 크롤러 개발일지

2020년 12월 08일 시작

쿠파스를 사용하기 위해 파이프라인을 알아보던 중 네이버 지식인을 선택하게 되었다

생각한 것은 질문이 올라오면 지정된 홍보문구로 답변을 하는 것.

하지만 질문이 생각보다 많이 올라오지 않았다

그래서 생각했다, 여태 올라온 질문은 크롤링해 내가 질문을 하면 되지 않을까?

2020년 12월 08일 시작합니다


2020년 12월 09일

네이버 지식인에 들어가서 질문을 크롤링하려고 한다.

지식인에 접속한 후 카페에서 많이 접했던 '노트북'키워드로 검색하여 검색 결과를 가져올 것이다.

크롤링하여 2777줄에 해당하는 정보를 얻을 수 있었다

지식인 질문 크롤러 결과

홀수는 질문 제목, 짝수는 질문내용이니

질문의 개수는 1388개이다

마지막 한 줄은 개행 문자(\n)이다

얻은 질문들을 살펴보니 중복된 글이 많아 지식인을 확인해보았다,

역시나 중복된 질문이 많이 있었다.

중복된 질문을 제거하기 위해 텍스트 파일을 불러와 Dataframe형태로 변환하여 중복을 없애기로 했다

vcsv = vcsv.drop_duplicates()
vcsv.to_csv('result.csv')

중복된 질문을 제거하고 result.csv로 저장하였다

중복된 질문을 제거하니 남은 질문은 657개였다.

이 질문들을 랜덤으로 작성하면 될 것 같다.


2020년 12월 10일

이제 질문을 작성할 단계만 남았다

질문을 작성하기 위해서는

네이버 로그인 -> 지식인 접속 -> 질문 등록 이 될것 같다

이과정을 모두 request롤 구현하기 힘드니 셀레늄을 이용하면 엄청 편리하다

selenium을 사용하여 구현해보도록 한다

일단은 네이버 로그인부터 시작한다

음,,, 캡챠?

네이버 로그인 캡챠 등장

다시 한번 도전해보도록 한다

 

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() 
time.sleep(5)

이번에는 자바스크립트로 입력해서 로그인을 시도해보았다

잘되네?

???? 이모티콘

로그인을 해결하였으니 지식인에서 질문을 등록해 보도록 한다

지식인 질문

질문 제목, 내용을 입력할 수 있다

xpath를 이용하여 제목과 내용에 값을 입력해주도록 한다

이게 뭐람?

NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="title"]"} (Session info: chrome=87.0.4280.88)

xpath를 찾을 수 없다나 뭐라나?

일단은 html를 확인해보도록 한다

지식인 iframe html코드

iframe이 있는 것을 확인할 수 있다
이제 iframe을 변경 후 입력하면 될 것 같다

driver.switch_to.default_content() 
iframe = driver.find_element_by_xpath('') 
driver.switch_to.frame(iframe)

이렇게 iframe을 변경해서 제목과 내용을 다시 입력해보았다

제목, 내용 입력 테스트

제목과 내용이 잘 입력되는 것을 볼 수 있다

 

 


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

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