Programing

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

crosscheck 2020. 7. 10. 08:01
반응형

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


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


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

동안

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

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

출처 : http://www.quora.com/Python-programming-language-1/How-is-BeautifulSoup-different-from-Scrapy


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

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

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


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

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


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

Scrapy :

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

BeautifulSoup :

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

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

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


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


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

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

  1. BeautifulSoup은 Scrapy보다 배우기 쉽습니다.
  2. Scrapy의 확장, 지원 및 커뮤니티는 BeautifulSoup보다 더 큽니다.
  3. Scrapy는 Spider 로 간주되어야 하지만 BeautifulSoup은 Parser 입니다.

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

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

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

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

기타

TLDR: scrapy is a framework that provides everything that one might need to build large scale crawls. It provides various features that hide complexity of crawling the webs. one can simply start writing web crawlers without worrying about the setup burden.

Beautiful soup Beautiful Soup is a Python package for parsing HTML and XML documents. So with Beautiful soup you can parse a webpage that has been already downloaded. BS4 is very popular and old. Unlike scrapy,You cannot use beautiful soup only to make crawlers. You will need other libraries like requests,urllib etc to make crawlers with bs4. Again, this means you would need to manage the list of urls being crawled,to be crawled, handle cookies , manage proxy, handle errors, create your own functions to push data to CSV,JSON,XML etc. If you want to speed up than you will have to use other libraries like multiprocessing.

To sum up.

  • Scrapy is a rich framework that you can use to start writing crawlers without any hassale.

  • Beautiful soup is a library that you can use to parse a webpage. It cannot be used alone to scrape web.

You should definitely use scrapy for your amazon and e-bay product price comparison website. You could build a database of urls and run the crawler every day(cron jobs,Celery for scheduling crawls) and update the price on your database.This way your website will always pull from the database and crawler and database will act as individual components.


BeautifulSoup is a library that lets you extract information from a web page.

Scrapy on the other hand is a framework, which does the above thing and many more things you probably need in your scraping project like pipelines for saving data.

You can check this blog to get started with Scrapy https://www.inkoop.io/blog/web-scraping-using-python-and-scrapy/


BeautifulSoup is only used to parse HTML and extract data,

Scrapy is used to download HTML, process data and save it.

For Detailed comparison see this

참고URL : https://stackoverflow.com/questions/19687421/difference-between-beautifulsoup-and-scrapy-crawler

반응형