Crawlee는 크롤링 및 스크래핑을 처음부터 끝까지 다루고 신뢰할 수 있는 스크레이퍼를 구축하는 데 도움을 줍니다. 빠른.
Python용 Crawlee는 얼리 어답터에게 열려 있습니다!
귀하의 크롤러는 거의 인간과 유사하게 나타나며 기본 구성을 사용하더라도 최신 봇 보호의 레이더를 피해 날아갑니다. Crawlee는 기술적 세부 사항에 대해 걱정할 필요 없이 웹에서 링크를 크롤링하고, 데이터를 스크랩하고, 기계가 읽을 수 있는 형식으로 지속적으로 저장할 수 있는 도구를 제공합니다. 그리고 풍부한 구성 옵션 덕분에 기본 설정으로 충분하지 않은 경우 Crawlee의 거의 모든 측면을 프로젝트 요구 사항에 맞게 조정할 수 있습니다.
Crawlee 프로젝트 웹사이트에서 전체 문서, 가이드 및 예시를 확인하세요 .
또한 프로젝트에 탐색하고 활용할 수 있는 Crawlee의 TypeScript 구현도 있습니다. GitHub의 JS/TS용 Crawlee에 대한 자세한 내용을 보려면 GitHub 저장소를 방문하세요.
자세한 내용은 Crawlee 설명서의 소개 튜토리얼을 방문하는 것이 좋습니다.
Crawlee는 crawlee
PyPI 패키지로 제공됩니다. 핵심 기능은 기본 패키지에 포함되어 있으며, 패키지 크기와 종속성을 최소화하기 위해 추가 기능을 선택적 추가 기능으로 사용할 수 있습니다. 모든 기능과 함께 Crawlee를 설치하려면 다음 명령을 실행하십시오.
pip install ' crawlee[all] '
그런 다음 Playwright 종속 항목을 설치합니다.
playwright install
Crawlee가 성공적으로 설치되었는지 확인합니다.
python -c ' import crawlee; print(crawlee.__version__) '
자세한 설치 지침은 설정 설명서 페이지를 참조하세요.
Crawlee를 시작하는 가장 빠른 방법은 Crawlee CLI를 사용하고 준비된 템플릿 중 하나를 선택하는 것입니다. 먼저 Pipx가 설치되어 있는지 확인하세요.
pipx --help
그런 다음 CLI를 실행하고 사용 가능한 템플릿 중에서 선택합니다.
pipx run crawlee create my-crawler
이미 crawlee
설치되어 있는 경우 다음을 실행하여 실행할 수 있습니다.
crawlee create my-crawler
다음은 Crawlee에서 다양한 유형의 크롤러를 시작하는 데 도움이 되는 몇 가지 실제 예입니다. 각 예는 간단한 HTML 페이지를 처리해야 하는지 또는 JavaScript가 많은 사이트와 상호 작용해야 하는지 여부에 관계없이 특정 사용 사례에 맞게 크롤러를 설정하고 실행하는 방법을 보여줍니다. 크롤러를 실행하면 현재 작업 디렉터리에 storage/
디렉터리가 생성됩니다.
BeautifulSoupCrawler
는 HTTP 라이브러리를 사용하여 웹페이지를 다운로드하고 HTML로 구문 분석된 콘텐츠를 사용자에게 제공합니다. 기본적으로 HTTP 통신에는 HttpxHttpClient
사용하고 HTML 구문 분석에는 BeautifulSoup을 사용합니다. HTML 콘텐츠에서 데이터를 효율적으로 추출해야 하는 프로젝트에 이상적입니다. 이 크롤러는 브라우저를 사용하지 않기 때문에 성능이 매우 좋습니다. 그러나 콘텐츠를 가져오기 위해 클라이언트측 JavaScript를 실행해야 하는 경우 이것만으로는 충분하지 않으며 PlaywrightCrawler
사용해야 합니다. 또한 이 크롤러를 사용하려면 beautifulsoup
extra와 함께 crawlee
설치해야 합니다.
import asyncio
from crawlee . beautifulsoup_crawler import BeautifulSoupCrawler , BeautifulSoupCrawlingContext
async def main () -> None :
crawler = BeautifulSoupCrawler (
# Limit the crawl to max requests. Remove or increase it for crawling all links.
max_requests_per_crawl = 10 ,
)
# Define the default request handler, which will be called for every request.
@ crawler . router . default_handler
async def request_handler ( context : BeautifulSoupCrawlingContext ) -> None :
context . log . info ( f'Processing { context . request . url } ...' )
# Extract data from the page.
data = {
'url' : context . request . url ,
'title' : context . soup . title . string if context . soup . title else None ,
}
# Push the extracted data to the default dataset.
await context . push_data ( data )
# Enqueue all links found on the page.
await context . enqueue_links ()
# Run the crawler with the initial list of URLs.
await crawler . run ([ 'https://crawlee.dev' ])
if __name__ == '__main__' :
asyncio . run ( main ())
PlaywrightCrawler
헤드리스 브라우저를 사용하여 웹페이지를 다운로드하고 데이터 추출을 위한 API를 제공합니다. 헤드리스 브라우저 관리를 위해 설계된 자동화 라이브러리인 Playwright를 기반으로 구축되었습니다. 콘텐츠 생성을 위해 클라이언트 측 JavaScript를 사용하는 웹 페이지 또는 JavaScript 기반 콘텐츠와의 상호 작용이 필요한 작업을 검색하는 데 탁월합니다. JavaScript 실행이 불필요하거나 더 높은 성능이 필요한 시나리오의 경우 BeautifulSoupCrawler
사용을 고려하세요. 또한 이 크롤러를 사용하려면 playwright
엑스트라와 함께 crawlee
설치해야 합니다.
import asyncio
from crawlee . playwright_crawler import PlaywrightCrawler , PlaywrightCrawlingContext
async def main () -> None :
crawler = PlaywrightCrawler (
# Limit the crawl to max requests. Remove or increase it for crawling all links.
max_requests_per_crawl = 10 ,
)
# Define the default request handler, which will be called for every request.
@ crawler . router . default_handler
async def request_handler ( context : PlaywrightCrawlingContext ) -> None :
context . log . info ( f'Processing { context . request . url } ...' )
# Extract data from the page.
data = {
'url' : context . request . url ,
'title' : await context . page . title (),
}
# Push the extracted data to the default dataset.
await context . push_data ( data )
# Enqueue all links found on the page.
await context . enqueue_links ()
# Run the crawler with the initial list of requests.
await crawler . run ([ 'https://crawlee.dev' ])
if __name__ == '__main__' :
asyncio . run ( main ())
다양한 추가 사용 사례 및 데모를 보려면 Crawlee 설명서의 예제 페이지를 살펴보세요.
웹 스크래핑 및 크롤링에 Crawlee가 선호되는 이유는 무엇입니까?
Crawlee는 오픈 소스이며 어디서나 실행되지만 Apify에서 개발했기 때문에 Apify 플랫폼에서 쉽게 설정하고 클라우드에서 실행할 수 있습니다. Crawlee를 Apify 플랫폼에 배포하는 방법에 대해 자세히 알아보려면 Apify SDK 웹사이트를 방문하세요.
Crawlee에서 버그나 문제를 발견하면 GitHub에 문제를 제출해 주세요. 질문이 있는 경우 Stack Overflow, GitHub 토론에서 질문하거나 Discord 서버에 참여할 수 있습니다.
귀하의 코드 기여를 환영하며 영원히 칭찬받을 것입니다! 개선을 위한 아이디어가 있으면 이슈를 제출하거나 끌어오기 요청을 작성하세요. 기여 지침 및 행동 강령은 CONTRIBUTING.md를 참조하세요.
이 프로젝트는 Apache License 2.0에 따라 라이센스가 부여됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.