본문 바로가기
capstone design : Web Crawling

web crawling 처음으로 돌아가보기

by 나영수 2022. 10. 5.

1. web crawling과 web scraping 차이점 알기

--> 어떻게 보면 crawling을 조금 더 제약조건을 걸어서 하는 것이 scraping이라고 생각하면 된다.
web crawling은 웹페이지에 있는 데이터를 모두 단순하게 긁어오는 것이지만 scraping의 경우는 다양한 소스에서 특정 데이터를 추출하는 것이 목적이기 때문이다. 그리고 목표 대상이 web crawling의 경우는 웹페이지라고 한정적이지만 scraping은 다양한 소스 모두를 목표로 할 수 있다는 점에서 차이점이 존재한다.

웹 크롤링의 경우는 방대한 양의 정보를 수집하는 것에 목적이 있다고 하면 웹 스크래핑의 경우에는 특정 사이트나 페이지에 대한 정보를 찾는데 집중하므로 확실한 정보를 수집하는 것에 목적이 있다.
(우리가 하게되는 것은 web scraping이 아닌가????) => 정확한 상품의 정보들만을 빼와야 하므로

굳이 web crawling이냐 web scraping이냐를 나누는 과정이 필요없고 필요에 따라 나누어서 사용하면 된다고 생각한다. 왜냐하면 만약 json을 가진 사이트라고 하면 web scrapping을 사용해서 원하는 정보를 추출하기 쉽지만 html을 파싱하게 되면 어떻게 보면 web page의 모든 데이터를 가져오는 것이기 때문이다.(내 생각)

2. request, beautifulsoup, selinum 장단점 비교

 

--> selenium
웹 자동화 테스트에 사용되는 프레임워크이다.(자동으로 클릭하던지 스크롤을 내린다던지)
실제 보여지는 웹페이지 전부를 가져올 수 있어서 직관적이다. 하지만 직접 웹 브라우저를 실행시켜서 하는 방식이여서 많이 느리다.(실제로 실행되어지는 장면을 볼 수 있다.)

장점 : 웹페이지 모든 정보 가져올 수 있음. 직관적, spa에도 파싱이 가능하다.
단점 : 느리다, 메모리 많이 잡아먹는다.

--> request와 beatifulsoup
HTML,XML파일의 정보를 추출해내는 라이브러리이다. 

python 내장 모듈인 requests를 이용해 html을 다운로드 받고, beautifulsoup로 데이터를 추출하는 방식이다.
하지만 이 방식은 SPA(single page application)나 javascript의 렌더링을 필요하는 사이트는 크롤링하기 어렵다.

장점 : 쉬움, 간단, 빠름
단점 : spa와 javascript 렌더링이 필요한 사이트는 크롤링 어려움. 병력처리 로직을 별도로 작성하지 않으면 느림.

--> scrapy
플러그인들이 다양해서 만능 프레임워크(그리고 django와도 연동하기 좋다!)
장점 : 다양한 플러그인 존재, 문서화가 잘 되어있음
단점 : 플러그인들끼리 호환이 안되는 이슈 존재, 아직 안 써봤다.


3. 라이브러리의 처리과정을 그려보기(crawling 내부 구성도)

--> 여러 페이지를 동시에 돌리기 위해서 멀티스레드를 사용하면 좋을 것 같다.
이렇게 하면 효율적으로 크롤러를 동작하게 할 수 있기 때문이다. 

 

<위의 내용은 아래 블로그를 내 방식으로 요약>

https://keyhyuk-kim.medium.com/python-%ED%81%AC%EB%A1%A4%EB%9F%AC-%EB%A9%80%ED%8B%B0%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%EB%A9%80%ED%8B%B0%EC%8A%A4%EB%A0%88%EB%93%9C%EB%A1%9C-%EC%84%B1%EB%8A%A5-%EC%A5%90%EC%96%B4%EC%A7%9C%EA%B8%B0-a7712bcbaa4

 

Python 크롤러 멀티프로세스 멀티스레드로 성능 쥐어짜기

python 크롤러를 개발하면서, 멀티스레드와 멀티프로세스를 동시에 사용해 성능 개선을 해본 과정을 정리해봤다.

keyhyuk-kim.medium.com

https://keyhyuk-kim.medium.com/python-%EC%9B%B9-%ED%81%AC%EB%A1%A4%EB%9F%AC-%EB%8F%84%EA%B5%AC-%EB%B9%84%EA%B5%90-%EB%B0%8F-%EC%82%AC%EC%9A%A9-%ED%9B%84%EA%B8%B0-scrapy-vs-selenium-vs-requests-urllib-6483041ca1ba

 

Python 웹 크롤러 도구 비교 및 사용 후기(Scrapy vs selenium vs Requests, urllib)

웹 크롤러 개발 언어로 Python을 선택했다면, 개발 효율성을 높혀줄 여러가지 라이브러리와 프레임워크가 있습니다.

keyhyuk-kim.medium.com