crawl4AI - openai api를 사용한 크롤링
crawl4AI는 크롤링을 위한 파이썬 패키지입니다. 기본적으로 웹페이지의 텍스트들을 잘 가져옵니다. 여기까지만 하면 여타 다른 크롤링 라이브러리와 다른점이 없습니다만, 좋은 부분은 openai의 api와 연동할 수 있다는 점입니다. 그렇게 하면 웹페이지에서 가져온 데이터들을 토대로 원하는 데이터만 쏙쏙 뽑을 수 있습니다. 테스트로 https://news.daum.net/의 데이터를 뽑아 달라고 했는데, 잘 만들어줍니다. 코드는 요거 밖에 안됩니다. async def main(): async with AsyncWebCrawler(verbose=True) as crawler: result = await crawler.arun( url='https://news.daum.net/', word_count_threshold=1, extraction_strategy=LLMExtractionStrategy( provider="openai/gpt-4o-mini", api_token=os.getenv('OPENAI_API_KEY'), schema=OpenAIModelFee.schema(), extraction_type="schema", instruction="""뉴스타이틀과 url을 뽑아서 다음과 같은 JSON포맷으로 출력해주세요. [ {"title": , "url": }, {"title": , "url": }, ... ] """ ), bypass_cache=True, ) print(result.extracted_content) 결과물도 잘 나오네요.. [ { "title": "'개미 무덤' 오명에 4000억 투입…네이버, 주가부양 나서", "url": "https://news.daum.net/20240930/한경비즈니스/20240930102405045scye", "error": false }, { "title": "수소차도 휩쓰는 中… 한·미·일·유럽 합종연횡 속도", "url": "https://news.daum.net/20240930/조선비즈/20240930104141207irbp", "error": false }, { "title": "\"10억 넘게 번다\"…강남 '분상제' 청약 열풍", "url": "https://news.daum.net/20240930/이데일리/20240930104508702gsln", "error": false }, ... 생략 ] https://github.com/unclecode/crawl4ai