책 재고 크롤러를 만들고 있다.
동작 과정은
1. 네이버 책 페이지에서 해당 책에 대한 내용을 크롤링
2. 크롤링한 내용 중 각 서점의 URL을 얻어와 각 서점 페이지에서 재고 상황 크롤링
처음에는 모든 과정을 셀레니움으로 코딩을 했는데, 속도 문제로 인해 리퀘스트로 바꾸려 시도하는 과정에서 발생했던 오류들과 결론을 적어본다.
사실 서점 페이지들은 request 만으로도 잘 동작했는데, 문제는 네이버 책 페이지였다.
request가 되는 페이지도 있고, 안되는 페이지도 있어 더 혼란스러웠다. 삽질을 조금 해 본 결과, 오디오 북이 있으면 request가 안 먹힌다는 사실은 알아냈지만... 그 사실을 알아냈다고 request가 동작하진 않았다.
1. request를 이용했을 시
500번 오류가 나왔다. 즉, 서버단에서 접속을 막았다는 얘기라 자동화툴이 아닌 것처럼 속이기 위해 셀레니움을 사용해보기로 했다.
2. selenium 사용
2-1. 헤드리스 옵션을 사용했을 시
오류가 났다. 사실 처음에는 셀레니움인데 왜 안되나 싶어 갑갑한 마음에 이리저리 구글링을 해보니, 헤드리스는 기능 상 부족한 점이 많다해서 옵션을 꺼봤다.
2-2. 헤드리스 옵션 미사용 시
잘 받아오는 것을 확인했다.
위 결과를 통해 selenium의 목적을 실감했다. 사람이 직접 쓰는 것 처럼 동작 가능하다.
다만, 그만큼 속도가 너무너무 느리다....
현재는 네이버 책 페이지는 selenium, 각 서점 재고는 request로 구동시켜 뒀다.
속도 개선을 위한 노력은 현재 진행 중.
삽질한 코드들은 git에 올려뒀다.
'만들기 > 크롤러' 카테고리의 다른 글
교보문고 재고 확인 사이트 만들기 (1) | 2019.08.17 |
---|---|
파이썬으로 크롤링하기 - WebDriverWait() 사용하기 (1) | 2019.06.24 |
파이썬으로 크롤링하기 - 메가박스 서울 지점명 받아오기 (0) | 2019.06.23 |
selenium으로 네이버 자동 로그인하기 (1) | 2019.06.23 |
selenium으로 자동로그인 하기 (0) | 2019.06.23 |