Python 개발자는 훈련을 알고 있습니다. 신뢰할 수 있는 회사 데이터가 필요하며 Crunchbase가 이를 제공합니다. 이 가이드에서는 필요한 데이터를 얻는 효과적인 Crunchbase 스크레이퍼를 Python으로 구축하는 방법을 보여줍니다.
Crunchbase는 위치, 비즈니스 초점, 창립자, 투자 내역 등 중요한 세부정보를 추적합니다. 이렇게 큰 데이터 세트에서 수동으로 추출하는 것은 실용적이지 않습니다. 이 정보를 분석 가능한 형식으로 변환하려면 자동화가 필수적입니다.
이 블로그를 마치면서 Python용 Crawlee를 사용하여 Crunchbase에서 데이터를 추출하는 세 가지 방법을 살펴보겠습니다. 우리는 그 중 두 가지를 완전히 구현하고 세 번째의 세부 사항과 과제에 대해 논의할 것입니다. 이를 통해 올바른 데이터 소스를 올바르게 선택하는 것이 얼마나 중요한지 더 잘 이해할 수 있습니다.
참고: 이 가이드는 성장하는 커뮤니티의 개발자가 작성한 것입니다. Crawlee와 함께 흥미로운 프로젝트를 구축해 보셨나요? Discord에 가입하여 귀하의 경험과 블로그 아이디어를 공유하세요. 우리는 귀하와 같은 개발자의 기여를 소중하게 생각합니다.
우리가 다룰 주요 단계:
- 프로젝트 설정
- 데이터 소스 선택
- 사이트맵 기반 크롤러 구현
- 검색 기반 접근 방식의 분석과 한계
- 공식 API 크롤러 구현
- 결론 및 저장소 액세스
전제 조건
- 파이썬 3.9 이상
- 웹 스크래핑 개념 숙지
- Python v0.5.0용 Crawlee
- 시 v2.0 이상
프로젝트 설정
스크래핑을 시작하기 전에 프로젝트를 설정해야 합니다. 이 가이드에서는 크롤러 템플릿(Playwright 및 Beautifulsoup)을 사용하지 않으므로 프로젝트를 수동으로 설정하겠습니다.
-
시 설치
pipx install poetry
-
프로젝트 폴더를 생성하고 탐색하세요.
mkdir crunchbase-crawlee && cd crunchbase-crawlee
-
Poetry를 사용하여 프로젝트를 초기화하고 모든 필드를 비워 둡니다.
poetry init
메시지가 표시되면:
- '호환되는 Python 버전'의 경우 다음을 입력하세요: >={Python 버전},=3.10,
- Enter를 눌러 다른 모든 필드를 비워 두세요
- "yes"를 입력하여 세대를 확인하세요
-
Poetry를 사용하여 프로젝트에 필요한 종속성과 함께 Crawlee를 추가하고 설치하세요.
poetry add crawlee[parsel,curl-impersonate]
-
Python 프로젝트용 Crawlee의 표준 파일 구조를 생성하여 프로젝트 설정을 완료합니다.
mkdir crunchbase-crawlee && touch crunchbase-crawlee/{__init__.py,__main__.py,main.py,routes.py}
기본 프로젝트 구조를 설정한 후 Crunchbase에서 데이터를 얻는 다양한 방법을 탐색할 수 있습니다.
데이터 소스 선택
회사 페이지에서 직접 타겟 데이터를 추출할 수 있지만 사이트를 탐색하는 가장 좋은 방법을 선택해야 합니다.
Crunchbase의 구조를 주의 깊게 살펴보면 데이터를 얻는 데 세 가지 주요 옵션이 있음을 알 수 있습니다.
- 사이트맵 - 전체 사이트 순회를 위한 것입니다.
- 검색 - 타겟 데이터 수집을 위해
- 공식 API - 권장 방식
각 접근 방식을 자세히 살펴보겠습니다.
사이트맵과 Python용 Crawlee를 사용하여 Crunchbase 스크래핑
사이트맵은 Google, Ahrefs 및 기타 검색 엔진과 같은 크롤러에서 사용하는 표준 사이트 탐색 방법입니다. 모든 크롤러는 robots.txt에 설명된 규칙을 따라야 합니다.
Crunchbase의 사이트맵 구조를 살펴보겠습니다.
보시다시피 조직 페이지 링크는 gzip을 사용하여 압축된 2차 수준 Sitemap 파일 내에 있습니다.
이 파일 중 하나의 구조는 다음과 같습니다.
여기서 lastmod 필드가 특히 중요합니다. 이전 데이터 수집 이후 어떤 회사가 정보를 업데이트했는지 추적할 수 있습니다. 이는 정기적인 데이터 업데이트에 특히 유용합니다.
1. 스크래핑을 위한 크롤러 구성
사이트 작업을 위해 Safari 브라우저를 가장하는 CurlImpersonateHttpClient를 사용하겠습니다. 이 선택은 사이트맵 작업 시 예상치 못한 것처럼 보일 수 있지만 Crunchbase의 보호 기능에는 필요합니다.
그 이유는 Crunchbase가 Cloudflare를 사용하여 자동 액세스로부터 보호하기 때문입니다. 이는 회사 페이지의 트래픽을 분석할 때 명확하게 드러납니다.
흥미로운 기능은 데이터가 포함된 문서를 로드한 후 Challenge.cloudflare가 실행된다는 것입니다. 이는 우리가 먼저 데이터를 받은 다음 JavaScript가 우리가 봇인지 확인한다는 것을 의미합니다. HTTP 클라이언트의 지문이 실제 브라우저와 충분히 유사하면 데이터를 성공적으로 수신할 수 있습니다.
Cloudflare는 사이트맵 수준에서도 트래픽을 분석합니다. 크롤러가 합법적이지 않은 것으로 보이면 액세스가 차단됩니다. 이것이 바로 우리가 실제 브라우저를 가장하는 이유입니다.
지나치게 공격적인 크롤링으로 인한 차단을 방지하기 위해 ConcurrencySettings를 구성하겠습니다.
이 접근 방식을 확장할 때는 프록시가 필요할 수 있습니다. 프록시 설정에 대한 자세한 내용은 설명서에서 확인할 수 있습니다.
스크래핑 결과는 JSON 형식으로 저장됩니다. 기본 크롤러 구성은 다음과 같습니다.
pipx install poetry
2. 사이트맵 탐색 구현
사이트맵 탐색은 두 단계로 이루어집니다. 첫 번째 단계에서는 조직 정보가 포함된 모든 파일 목록을 가져와야 합니다.
pipx install poetry
두 번째 단계에서는 gzip 형식으로 저장된 두 번째 수준 사이트맵 파일을 처리합니다. 먼저 데이터의 압축을 풀어야 하므로 특별한 접근 방식이 필요합니다.
mkdir crunchbase-crawlee && cd crunchbase-crawlee
3. 데이터 추출 및 저장
각 회사 페이지에는 많은 양의 정보가 포함되어 있습니다. 시연을 위해 회사 이름, 간략한 설명, 웹사이트, 위치 등 주요 필드에 중점을 두겠습니다.
Crunchbase의 장점 중 하나는 모든 데이터가 페이지 내에서 JSON 형식으로 저장된다는 것입니다.
이렇게 하면 데이터 추출이 크게 단순화됩니다. 하나의 Xpath 선택기만 사용하여 JSON을 가져온 다음 jmespath를 적용하여 필요한 필드를 추출하면 됩니다.
poetry init
수집된 데이터는 context.push_data 메소드를 사용해 Python 내부 저장소용 Crawlee에 저장됩니다. 크롤러가 완료되면 수집된 모든 데이터를 JSON 파일로 내보냅니다.
poetry add crawlee[parsel,curl-impersonate]
4. 프로젝트 실행
모든 구성 요소가 준비되었으면 크롤러에 대한 진입점을 만들어야 합니다.
mkdir crunchbase-crawlee && touch crunchbase-crawlee/{__init__.py,__main__.py,main.py,routes.py}
Poetry를 사용하여 크롤러 실행:
# main.py from crawlee import ConcurrencySettings, HttpHeaders from crawlee.crawlers import ParselCrawler from crawlee.http_clients import CurlImpersonateHttpClient from .routes import router async def main() -> None: """The crawler entry point.""" concurrency_settings = ConcurrencySettings(max_concurrency=1, max_tasks_per_minute=50) http_client = CurlImpersonateHttpClient( impersonate='safari17_0', headers=HttpHeaders( { 'accept-language': 'en', 'accept-encoding': 'gzip, deflate, br, zstd', } ), ) crawler = ParselCrawler( request_handler=router, max_request_retries=1, concurrency_settings=concurrency_settings, http_client=http_client, max_requests_per_crawl=30, ) await crawler.run(['https://www.crunchbase.com/www-sitemaps/sitemap-index.xml']) await crawler.export_data_json('crunchbase_data.json')
5. 마지막으로 사이트맵 크롤러 사용의 특징
사이트맵 접근 방식에는 뚜렷한 장점과 한계가 있습니다. 다음과 같은 경우에 이상적입니다.
- 플랫폼 내 모든 기업에 대한 데이터를 수집해야 할 때
- 특별한 기업 선정 기준이 없는 경우
- 시간과 컴퓨터 자원이 충분한 경우
그러나 고려해야 할 중요한 제한 사항이 있습니다.
- 수집 중 데이터 필터링 기능이 거의 없음
- Cloudflare 블록에 대한 지속적인 모니터링 필요
- 솔루션을 확장하려면 프록시 서버가 필요하므로 프로젝트 비용이 증가합니다
Crunchbase 스크래핑을 위해 검색 사용
사이트맵 접근 방식의 한계로 인해 검색이 다음 솔루션이 될 수 있습니다. 그러나 Crunchbase는 공개 페이지에 비해 검색 기능에 더 엄격한 보안 조치를 적용합니다.
가장 큰 차이점은 Cloudflare 보호 작동 방식에 있습니다. 회사 페이지에 액세스할 때 Challenge.cloudflare 확인 전에 데이터를 수신하는 동안 검색 API에는 이 확인을 통과한 유효한 쿠키가 필요합니다.
이를 실제로 확인해 보겠습니다. 시크릿 모드에서 다음 링크를 엽니다:
# routes.py from crawlee.crawlers import ParselCrawlingContext from crawlee.router import Router from crawlee import Request router = Router[ParselCrawlingContext]() @router.default_handler async def default_handler(context: ParselCrawlingContext) -> None: """Default request handler.""" context.log.info(f'default_handler processing {context.request} ...') requests = [ Request.from_url(url, label='sitemap') for url in context.selector.xpath('//loc[contains(., "sitemap-organizations")]/text()').getall() ] # Since this is a tutorial, I don't want to upload more than one sitemap link await context.add_requests(requests, limit=1)
트래픽을 분석하면 다음과 같은 패턴을 볼 수 있습니다.
이벤트 순서는 다음과 같습니다.
- 먼저 코드 403으로 페이지가 차단되었습니다.
- 그런 다음 Challenge.cloudflare 검사가 수행됩니다
- 검사를 성공적으로 통과한 후에만 코드 200이 포함된 데이터를 수신합니다.
이 프로세스를 자동화하려면 Cloudflare Turnstile을 우회할 수 있는 헤드리스 브라우저가 필요합니다. Python용 Crawlee의 현재 버전(v0.5.0)은 향후 개발이 계획되어 있지만 이 기능을 제공하지 않습니다.
이 예에 따라 Camoufox를 통합하여 Python용 Crawlee의 기능을 확장할 수 있습니다.
공식 Crunchbase API로 작업하기
Crunchbase는 기본 기능을 갖춘 무료 API를 제공합니다. 유료 구독 사용자는 확장된 데이터 액세스 권한을 갖습니다. 사용 가능한 엔드포인트에 대한 전체 문서는 공식 API 사양에서 찾을 수 있습니다.
1. API 액세스 설정
API 작업을 시작하려면 다음 단계를 따르세요.
- Crunchbase 계정 만들기
- 통합 섹션으로 이동
- Crunchbase 기본 API 키 생성
문서에는 키 활성화에 최대 1시간이 걸릴 수 있다고 명시되어 있지만 일반적으로 키 생성 후 즉시 작동이 시작됩니다.
2. API 작업을 위한 크롤러 구성
중요한 API 기능은 제한입니다. 즉, 분당 요청이 200개를 넘을 수 없지만 무료 버전에서는 이 수가 훨씬 낮습니다. 이를 고려하여 ConcurrencySettings를 구성해 보겠습니다. 우리는 공식 API로 작업하고 있으므로 HTTP 클라이언트를 마스킹할 필요가 없습니다. 우리는 헤더가 미리 설정된 표준 'HttpxHttpClient'를 사용하겠습니다.
먼저 API 키를 환경 변수에 저장해 보겠습니다.
pipx install poetry
API 작업을 위한 크롤러 구성은 다음과 같습니다.
mkdir crunchbase-crawlee && cd crunchbase-crawlee
3. 검색결과 처리
API 작업을 위해서는 두 가지 주요 엔드포인트가 필요합니다.
- get_autocompletes - 검색용
- get_entities_organizations__entity_id - 데이터 가져오기
먼저 검색결과 처리를 구현해 보겠습니다.
poetry init
4. 회사 데이터 추출
회사 목록을 가져온 후 각 회사에 대한 자세한 정보를 추출합니다.
poetry add crawlee[parsel,curl-impersonate]
5. 고급 위치 기반 검색
보다 유연한 검색 기능이 필요한 경우 API가 특별한 검색 엔드포인트를 제공합니다. 다음은 프라하의 모든 회사를 검색하는 예입니다.
mkdir crunchbase-crawlee && touch crunchbase-crawlee/{__init__.py,__main__.py,main.py,routes.py}
검색 결과 및 페이지 매김 처리를 위해 다음 핸들러를 사용합니다.
# main.py from crawlee import ConcurrencySettings, HttpHeaders from crawlee.crawlers import ParselCrawler from crawlee.http_clients import CurlImpersonateHttpClient from .routes import router async def main() -> None: """The crawler entry point.""" concurrency_settings = ConcurrencySettings(max_concurrency=1, max_tasks_per_minute=50) http_client = CurlImpersonateHttpClient( impersonate='safari17_0', headers=HttpHeaders( { 'accept-language': 'en', 'accept-encoding': 'gzip, deflate, br, zstd', } ), ) crawler = ParselCrawler( request_handler=router, max_request_retries=1, concurrency_settings=concurrency_settings, http_client=http_client, max_requests_per_crawl=30, ) await crawler.run(['https://www.crunchbase.com/www-sitemaps/sitemap-index.xml']) await crawler.export_data_json('crunchbase_data.json')
6. 마지막으로 무료 API 제한 사항
API 무료 버전에는 상당한 제한이 있습니다.
- 사용 가능한 엔드포인트가 제한되어 있습니다
- 자동 완성 기능은 회사 검색에만 작동합니다
- 모든 데이터 필드에 접근할 수 있는 것은 아닙니다
- 제한된 검색 필터링 기능
프로덕션 수준 작업의 경우 유료 구독을 고려해 보세요. API는 속도 제약에도 불구하고 Crunchbase 데이터에 액세스하는 가장 안정적인 방법을 제공합니다.
앞으로 나아갈 최선의 길은 무엇입니까?
Crunchbase에서 데이터를 얻는 세 가지 접근 방식을 살펴보았습니다.
- 사이트맵 - 대규모 데이터 수집용
- 검색 - Cloudflare 보호로 인해 자동화가 어려움
- 공식 API - 상업 프로젝트를 위한 가장 안정적인 솔루션
각 방법마다 장단점이 있지만 대부분의 프로젝트에서는 무료 버전의 한계에도 불구하고 공식 API를 사용하는 것이 좋습니다.
전체 소스 코드는 내 저장소에서 확인할 수 있습니다. 질문이 있거나 구현 세부 사항에 대해 논의하고 싶으십니까? Discord에 참여하세요. 개발자 커뮤니티가 도와드리겠습니다.
위 내용은 Easy Guide에서 Python을 사용하여 Crunchbase를 긁는 방법)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

Python은 배우고 사용하기 쉽고 C는 더 강력하지만 복잡합니다. 1. Python Syntax는 간결하며 초보자에게 적합합니다. 동적 타이핑 및 자동 메모리 관리를 사용하면 사용하기 쉽지만 런타임 오류가 발생할 수 있습니다. 2.C는 고성능 응용 프로그램에 적합한 저수준 제어 및 고급 기능을 제공하지만 학습 임계 값이 높고 수동 메모리 및 유형 안전 관리가 필요합니다.

Python과 C는 메모리 관리 및 제어에 상당한 차이가 있습니다. 1. Python은 참조 계산 및 쓰레기 수집을 기반으로 자동 메모리 관리를 사용하여 프로그래머의 작업을 단순화합니다. 2.C는 메모리 수동 관리가 필요하므로 더 많은 제어를 제공하지만 복잡성과 오류 위험을 증가시킵니다. 선택할 언어는 프로젝트 요구 사항 및 팀 기술 스택을 기반으로해야합니다.

과학 컴퓨팅에서 Python의 응용 프로그램에는 데이터 분석, 머신 러닝, 수치 시뮬레이션 및 시각화가 포함됩니다. 1.numpy는 효율적인 다차원 배열 및 수학적 함수를 제공합니다. 2. Scipy는 Numpy 기능을 확장하고 최적화 및 선형 대수 도구를 제공합니다. 3. 팬더는 데이터 처리 및 분석에 사용됩니다. 4. matplotlib는 다양한 그래프와 시각적 결과를 생성하는 데 사용됩니다.

Python 또는 C를 선택할 것인지 프로젝트 요구 사항에 따라 다릅니다. 1) Python은 간결한 구문 및 풍부한 라이브러리로 인해 빠른 개발, 데이터 과학 및 스크립팅에 적합합니다. 2) C는 컴파일 및 수동 메모리 관리로 인해 시스템 프로그래밍 및 게임 개발과 같은 고성능 및 기본 제어가 필요한 시나리오에 적합합니다.

Python은 데이터 과학 및 기계 학습에 널리 사용되며 주로 단순성과 강력한 라이브러리 생태계에 의존합니다. 1) 팬더는 데이터 처리 및 분석에 사용되며, 2) Numpy는 효율적인 수치 계산을 제공하며 3) Scikit-Learn은 기계 학습 모델 구성 및 최적화에 사용되며 이러한 라이브러리는 Python을 데이터 과학 및 기계 학습에 이상적인 도구로 만듭니다.

하루에 2 시간 동안 파이썬을 배우는 것으로 충분합니까? 목표와 학습 방법에 따라 다릅니다. 1) 명확한 학습 계획을 개발, 2) 적절한 학습 자원 및 방법을 선택하고 3) 실습 연습 및 검토 및 통합 연습 및 검토 및 통합,이 기간 동안 Python의 기본 지식과 고급 기능을 점차적으로 마스터 할 수 있습니다.

웹 개발에서 Python의 주요 응용 프로그램에는 Django 및 Flask 프레임 워크 사용, API 개발, 데이터 분석 및 시각화, 머신 러닝 및 AI 및 성능 최적화가 포함됩니다. 1. Django 및 Flask 프레임 워크 : Django는 복잡한 응용 분야의 빠른 개발에 적합하며 플라스크는 소형 또는 고도로 맞춤형 프로젝트에 적합합니다. 2. API 개발 : Flask 또는 DjangorestFramework를 사용하여 RESTFULAPI를 구축하십시오. 3. 데이터 분석 및 시각화 : Python을 사용하여 데이터를 처리하고 웹 인터페이스를 통해 표시합니다. 4. 머신 러닝 및 AI : 파이썬은 지능형 웹 애플리케이션을 구축하는 데 사용됩니다. 5. 성능 최적화 : 비동기 프로그래밍, 캐싱 및 코드를 통해 최적화

Python은 개발 효율에서 C보다 낫지 만 C는 실행 성능이 높습니다. 1. Python의 간결한 구문 및 풍부한 라이브러리는 개발 효율성을 향상시킵니다. 2.C의 컴파일 유형 특성 및 하드웨어 제어는 실행 성능을 향상시킵니다. 선택할 때는 프로젝트 요구에 따라 개발 속도 및 실행 효율성을 평가해야합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

Dreamweaver Mac版
시각적 웹 개발 도구

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.
