본문 바로가기

만들기/크롤러

selenium과 requests 어떤 걸 쓸까

 

책 재고 크롤러를 만들고 있다.

동작 과정은

1. 네이버 책 페이지에서 해당 책에 대한 내용을 크롤링

2. 크롤링한 내용 중 각 서점의 URL을 얻어와 각 서점 페이지에서 재고 상황 크롤링

처음에는 모든 과정을 셀레니움으로 코딩을 했는데, 속도 문제로 인해 리퀘스트로 바꾸려 시도하는 과정에서 발생했던 오류들과 결론을 적어본다.

 

사실 서점 페이지들은 request 만으로도 잘 동작했는데, 문제는 네이버 책 페이지였다.

request가 되는 페이지도 있고, 안되는 페이지도 있어 더 혼란스러웠다. 삽질을 조금 해 본 결과, 오디오 북이 있으면 request가 안 먹힌다는 사실은 알아냈지만... 그 사실을 알아냈다고 request가 동작하진 않았다.

 

1. request를 이용했을 시

500번 오류가 나왔다. 즉, 서버단에서 접속을 막았다는 얘기라 자동화툴이 아닌 것처럼 속이기 위해 셀레니움을 사용해보기로 했다.

 

2. selenium 사용

2-1. 헤드리스 옵션을 사용했을 시

오류가 났다. 사실 처음에는 셀레니움인데 왜 안되나 싶어 갑갑한 마음에 이리저리 구글링을 해보니, 헤드리스는 기능 상 부족한 점이 많다해서 옵션을 꺼봤다.

2-2. 헤드리스 옵션 미사용 시

잘 받아오는 것을 확인했다.

 

 

위 결과를 통해 selenium의 목적을 실감했다. 사람이 직접 쓰는 것 처럼 동작 가능하다.

다만, 그만큼 속도가 너무너무 느리다....

현재는 네이버 책 페이지는 selenium, 각 서점 재고는 request로 구동시켜 뒀다.

속도 개선을 위한 노력은 현재 진행 중.

 

삽질한 코드들은 git에 올려뒀다.

https://github.com/Neung0/whereisthebook