BeautifulSoup과 Scrapy 크롤러의 차이점은 무엇입니까?


134

아마존과 이베이 제품 가격의 비교를 보여주는 웹 사이트를 만들고 싶습니다. 이 중 어느 것이 더 잘 작동하며 왜 그럴까요? 나는 BeautifulSoup에 다소 익숙 하지만 Scrapy 크롤러 에는별로 익숙 하지 않습니다 .


6
두 사이트 모두 훌륭한 API를 가지고있을 때 왜 크롤러를 사용 하시겠습니까? aws.amazon.com/python developer.ebay.com/common/api
인바 로즈

5
나는 인도 출신이며 Amazon-Api 는 인도 호스트를 지원하지 않는다고 생각 합니다. 인도 에는 api (로케일) 가 없습니다 . 호스트 = { 'ca': 'ecs.amazonaws.ca', 'cn': 'webservices.amazon.cn', 'de': 'ecs.amazonaws.de', 'es': 'webservices.amazon.es' , 'fr': 'ecs.amazonaws.fr', 'it': 'webservices.amazon.it', 'jp': 'ecs.amazonaws.jp', 'uk': 'ecs.amazonaws.co.uk' , 'us': 'ecs.amazonaws.com',}
Nishant Bhakta

11
API가없는 다른 사이트를 크롤링하려면 어떻게해야합니까?
Nishant Bhakta

@InbarRose Amazon 제품 API를 사용하려면 Amazon Associate 계정이 필요합니다.
Zachary Ryan Smith

답변:


231

Scrapy 는 웹 스파이더 또는 웹 스크레이퍼 프레임 워크입니다 . Scrapy에 루트 URL을 제공하여 크롤링을 시작한 다음 크롤링 및 페치하려는 URL 수에 제한을 지정할 수 있습니다. 웹 스크래핑 또는 크롤링을 위한 완벽한 프레임 워크입니다 .

동안

BeautifulSoup구문 분석 라이브러리 로 URL에서 내용을 가져 오는 작업을 훌륭하게 수행하며 번거 로움없이 특정 부분을 구문 분석 할 수 있습니다. 사용자가 제공 한 URL의 내용 만 가져 와서 중지합니다. 특정 기준에 따라 무한 루프 안에 수동으로 넣지 않으면 크롤링되지 않습니다.

간단히 말해, Beautiful Soup을 사용하면 Scrapy와 비슷한 것을 만들 수 있습니다. Scrapy는 완전한 프레임 워크 인 반면 Beautiful Soup은 라이브러리 입니다.

출처


1
어느 것이 더 빠르면 BeautifulSoup을 사용하고 있으며 데이터를 스크랩하는 데 약 10 초가 걸립니까? beautifulsoup보다 더 긁히지 않습니까?
shuboy2014

블로킹 코드와 함께 beautifulsoup을 사용하는 경우 독립적 인 요청이있는 한 scrapy가 더 빠르지 만 asyncio와 함께 beautifulsoup을 사용하여 더 나은 성능을 얻을 수 있다고 생각합니다.
염료

Scrapy와 BeautifulSoup은 매우 빠르며 두 가지를 모두 최대한 활용할 수 있습니다.
Rahul

18

둘 다 좋다고 생각합니다. 지금 두 가지를 모두 사용하는 프로젝트를하고 있습니다. 먼저 scrapy를 사용하여 모든 페이지를 스크랩하고 파이프 라인을 사용하여 mongodb 컬렉션에 저장하고 페이지에 존재하는 이미지를 다운로드하십시오. 그 후 BeautifulSoup4를 사용하여 속성 값을 변경하고 특수 태그를 가져와야하는 위치 처리를 만듭니다.

원하는 페이지 제품을 모르는 경우 크롤러를 사용하여 명시 적 for 루프를 만들지 않고 제품을 찾는 모든 Amazon / ebay 웹 사이트를 실행할 수 있으므로 훌륭한 도구가 까다로울 수 있습니다.

복잡한 문서를 살펴보면 사용이 매우 간단합니다.


그래서 (Twisted, pywin32, pyOpenSSL ete ..)와 같은 많은 종속성이 있기 때문에 웹 서버에서 Scrapy 를 사용할 수 있습니까 ? (이 바보 같은 질문에 대해 유감
스럽게도

웹 서버에서? 나는 그것을 시도하지 않습니다 ... 나는 쉘에서 그것을 사용하여 스파이더를 실행하기 위해 "scrapy crawl <name of crawler>"를 실행 ... 아마도 당신은 서버에서 이것을 사용할 수 있지만 파이썬을 사용하여 이것을 호출해야합니다 하위 프로세스 모듈 ( docs.python.org/2/library/subprocess.html ). 내가 이것을 시도하지는 않았지만 아마도 효과가있을 수 있습니다 ... 단지 참고로 scrapy의 로그 메시지를 사용하여 크롤러에서 오류가 발생할 수있는 위치를 알 수 있습니다 (scrapy import log).
rdenadai

4

둘 다 데이터를 구문 분석하는 데 사용하고 있습니다.

Scrapy :

  • Scrapy는 웹 사이트를 크롤링하고 페이지에서 구조화 된 데이터를 추출하는 데 사용되는 빠른 고급 웹 크롤링 및 웹 스크래핑 프레임 워크입니다.
  • 그러나 데이터가 자바 스크립트에서 제공되거나 동적 분석을로드 할 때 약간의 제한이 있습니다. 스플래쉬, 셀레늄 등과 같은 패키지를 사용하여 데이터를 가져올 수 있습니다.

뷰티플 수프 :

  • Beautiful Soup은 HTML 및 XML 파일에서 데이터를 가져 오기위한 Python 라이브러리입니다.

  • 자바 스크립트에서 데이터를 가져 오거나 동적으로 페이지를로드하기 위해이 패키지를 사용할 수 있습니다.

Scrapy with BeautifulSoup은 정적 및 동적 컨텐츠 스크랩에 사용할 수있는 최고의 콤보 중 하나입니다.


2

내가하는 방법은 스크랩이 아닌 eBay / Amazon API를 사용한 다음 BeautifulSoup을 사용하여 결과를 구문 분석하는 것입니다.

API를 사용하면 신원 숨기기, 프록시 문제 등 걱정할 필요없이 복잡한 크롤러에서 가져온 것과 동일한 데이터를 얻을 수있는 공식적인 방법을 제공합니다.


8
이 질문은 API를 사용할 수없는 솔루션을 분명히 요구합니다.
Rohanil

2

Scrapy 크롤링 로직에만 집중할 수 있도록 스크래핑을보다 쉽게 ​​만들어주는 수많은 도구 가 포함 된 웹 스크래핑 프레임 워크 입니다. scrapy가 내가 좋아하는 것들 중 일부는 다음과 같습니다.

  • 피드 내보내기 : 기본적으로 CSV, JSON, jsonlines 및 XML과 같은 다양한 형식으로 데이터를 저장할 수 있습니다.
  • 비동기 스크래핑 : Scrapy는 트위스트 프레임 워크를 사용하여 각 요청이 비 차단 방식으로 처리되는 여러 URL을 한 번에 방문 할 수 있습니다 (기본적으로 우리는 다른 요청을 보내기 전에 요청이 끝날 때까지 기다릴 필요가 없습니다).
  • 선택기 : 이곳은 긁힌 음식과 아름다운 수프를 비교할 수있는 곳입니다. 선택기는 웹 페이지에서 제목, 클래스 이름이있는 특정 div 등의 특정 데이터를 선택할 수있게 해줍니다.) Scrapy는 구문 분석을 위해 lxml을 사용하여 아름다운 수프보다 매우 빠릅니다.
  • 프록시, 사용자 에이전트, 헤더 등 설정 : scrapy를 사용하면 프록시 및 기타 헤더를 ​​동적으로 설정하고 회전 할 수 있습니다.

  • 품목 파이프 라인 : 파이프 라인을 통해 추출 후 데이터를 처리 할 수 ​​있습니다. 예를 들어 데이터를 mysql 서버로 푸시하도록 파이프 라인을 구성 할 수 있습니다.

  • 쿠키 : scrapy는 자동으로 쿠키를 처리합니다.

기타

TLDR : scrapy는 대규모 크롤링을 구축하는 데 필요한 모든 것을 제공하는 프레임 워크입니다. 웹 크롤링의 복잡성을 숨기는 다양한 기능을 제공합니다. 설치 부담에 대한 걱정없이 웹 크롤러 작성을 시작할 수 있습니다.

아름다운 수프 Beautiful Soup은 HTML 및 XML 문서 구문 분석 하기위한 Python 패키지입니다. 따라서 아름다운 수프를 사용하면 이미 다운로드 한 웹 페이지를 구문 분석 할 수 있습니다. BS4는 매우 인기 있고 오래되었습니다. scrapy와는 달리 크롤러를 만들기 위해서만 아름다운 수프를 사용할 수 없습니다 . bs4로 크롤러를 만들려면 requests, urllib 등과 같은 다른 라이브러리가 필요합니다. 다시 말해, 크롤링 할 URL 목록을 관리하고, 크롤링하고, 쿠키를 처리하고, 프록시를 관리하고, 오류를 처리하고, CSV, JSON, XML 등으로 데이터를 푸시하는 고유 한 기능을 만들어야합니다. 속도를 높이려면 multiprocessing 과 같은 다른 라이브러리를 사용해야합니다.

요약하자면.

  • Scrapy는 판매없이 크롤러 작성을 시작하는 데 사용할 수있는 풍부한 프레임 워크입니다.

  • 아름다운 수프는 웹 페이지를 파싱하는 데 사용할 수있는 라이브러리입니다. 웹을 긁기 위해 단독으로 사용할 수 없습니다.

아마존 및 이베이 제품 가격 비교 웹 사이트에는 반드시 scrapy를 사용해야합니다. URL 데이터베이스를 구축하고 매일 크롤러 (크론 작업, 크롤링 예약을위한 셀러리)를 실행하고 데이터베이스의 가격을 업데이트 할 수 있습니다. 이렇게하면 웹 사이트가 항상 데이터베이스에서 가져와 크롤러와 데이터베이스가 개별 구성 요소로 작동합니다.



0

사용 scrapy를 그런 다음 scapy의 사전 서면 방법 중 하나처럼 해달라고 경우, 코드의 톤을 저장하고 구조화 프로그래밍을 시작할 수 있습니다 BeautifulSoup로 scrapy 방법의 대신 사용할 수 있습니다. 큰 프로젝트에는 두 가지 장점이 있습니다.


0

차이점은 많으며 도구 / 기술 선택은 개별 요구에 따라 다릅니다.

몇 가지 주요 차이점은 다음과 같습니다.

  1. BeautifulSoup은 Scrapy보다 배우기 쉽습니다.
  2. Scrapy는 BeautifulSoup보다 확장, 지원 및 커뮤니티가 더 큽니다.
  3. Scrapy는 Spider 로 간주되어야 하지만 BeautifulSoup은 Parser 입니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.