AI 탐구노트

Crawl4AI : 비동기 웹 크롤링 데이터 추출 및 간소화 앱 본문

AI 기술

Crawl4AI : 비동기 웹 크롤링 데이터 추출 및 간소화 앱

42morrow 2024. 10. 7. 11:40

Thumnail Maker 이용 제작, 배경사진 : Unsplash 의 Faded_Gallery

 

 

 

얼마 전 Crawling을 전문으로 하는 FireCrawl이라는 솔루션을 소개한 바 있습니다. 

 

Firecrawl : 웹사이트 데이터 크롤링 API 서비스

URL 내용을 크롤링해서 LLM을 위한 마크다운 또는 구조화된 데이터로 변환하는 API 서비스 Firecrawl은 웹 사이트 URL 상의 내용을 크롤링해서 정돈된 마크다운 형태나 LLM에 적합한 구조화된 데이터

42morrow.tistory.com

 

 

그랬는데 바로 또 다른 Crawler를 알게 되어 간단한 소개와 실행 테스트를 진행해 봅니다. 

 

Crawl4AI는 비동기 아키텍처를 채용해  웹 데이터를 효율적으로 수집하고 정제하는 자동화된 솔루션으로, 대규모 데이터 크롤링과 고속 처리에 특히 유리합니다. 

 

Crawl4AI의 특징

 

Crawl4AI의 특징들 가운데 몇 가지 관심을 끈 것은 다음과 같습니다.

  • 오픈소스, 무료 (Apache 2.0 라이선스)
  • 비동기 아키텍처 (asyncio를 이용)로 매우 빠릅니다!
  • 다양한 출력 양식을 지원 (Json, 정리된 HTML, Markdown 등)
  • 페이지에서 메타 데이터를 추출합니다.
  • 사용자 에이전트를 정의할 수 있습니다. 
  • 크롤링 전 사용자 정의 Javascript를 실행할 수 있습니다. 
  • 페이지의 스크린샷 촬영을 지원합니다.
  • 추출을 개선하기 위한 지침, 키워드를 전달할 수 있습니다. 

 

설치방법

설치는 pip를 이용해 진행합니다.

해 보니 crawl4ai 설치 시 playwright를 비롯한 필요 패키지가 함께 설치되었습니다. 

# crawl4ai 설치
$ pip install crawl4ai

 

 

 

위의 과정 만으로 작업이 끝났다고 생각했었는데 python으로 코드를 생성해서 테스트 하면 오류가 발생합니다.

 

Playwright 가 필요로 하는 요구 패키지가 설치되지 않아서인데 그 작업을 다음과 같이 실행합니다.

아래 실행을 하면 자동으로 chromium, ffmpeg, firefox, webkit 이 다운받고 설치됩니다. 

 

# playwright 필요 패키지 설치
$ playwright install

 

사용방법

github에서 제공하는 간단한 코드를 이용해 보겠습니다. 

크롤링을 해 볼 곳은 조선일보의 9/30 기사인 '국내 게임사들, AI 접목 올인… "한 달만에 신작 내놨다"' 입니다.

해당 기사는 ChatGPT한테 읽어와 보라고 했을 때 기사로의 직접 접근이 막혀 있었습니다. 

이런 경우, 보통 크롤러를 막기 위한 장치가 반영되는 경우가 대부분이죠. (이 사이트도 꼭 그렇단건 아닙니다. 상세 분석은 안 했음)

 

사진 : ChatGPT에게 해당 URL로의 접근이 가능한지 확인 시 나오는 문구

 

 

 

해당 URL을 읽어와서 표시하는 코드는 다음과 같습니다. 

import asyncio
from crawl4ai import AsyncWebCrawler

async def main():
    async with AsyncWebCrawler(verbose=True) as crawler:
        result = await crawler.arun(url="https://www.chosun.com/economy/tech_it/2024/09/30/O2MFE3VNNVDMDITUNE6ZLCAZ7E/")
        print(result.markdown)

if __name__ == "__main__":
    asyncio.run(main())

 

 

 

결과 확인

크롤링 결과는 다음과 같습니다.

전체 페이지 크롤링이 되며 아래 박스에 표시한 부분이 해당 기사 부분이 됩니다. (뒷부분은 스크롤 관계로 생략)

 

 

아래 뉴스 사이트의 내용과 비교해보면 아주 훌륭하게 추출한 것을 알 수 있습니다. 

 

사진 : 조선일보 기사 중 기사본문에 해당하는 영역의 텍스트

 

 

 

확실히 속도는 빠르고 괜찮습니다. 

향후 데이터 수집을 위해 필요한 경우에 BeautifulSOAP나 Crawl4AI 등을 활용해서 작업을 해봐야겠습니다. 

 

이번 글은 간단히 새로 나온 크롤러 하나 소개하는 것으로 끝냅니다.