Spaces:
Running
Running
| #!/usr/bin/env python3 | |
| """ | |
| Scrape a website and convert to Markdown for the AIbrahim knowledge base. | |
| Usage: | |
| python scripts/scraper.py | |
| Requires: | |
| pip install firecrawl-py | |
| FIRECRAWL_API_KEY environment variable | |
| """ | |
| import os | |
| from pathlib import Path | |
| from dotenv import load_dotenv | |
| # Try to import firecrawl, provide helpful error if not installed | |
| try: | |
| from firecrawl import FirecrawlApp | |
| except ImportError: | |
| print("β firecrawl-py not installed. Run: pip install firecrawl-py") | |
| exit(1) | |
| load_dotenv() | |
| # Configuration | |
| PROJECT_ROOT = Path(__file__).parent.parent | |
| OUTPUT_FILE = PROJECT_ROOT / "knowledge_base_md" / "website.md" | |
| def main(): | |
| api_key = os.getenv("FIRECRAWL_API_KEY") | |
| if not api_key: | |
| print("β FIRECRAWL_API_KEY not set in environment") | |
| return | |
| # Initialize | |
| app = FirecrawlApp(api_key=api_key) | |
| # Crawl the site | |
| print("π·οΈ Crawling website... (This may take a few minutes)") | |
| crawl_result = app.crawl( | |
| 'https://morawa-dev.github.io/albarka.github.io/', | |
| limit=100, # Safety limit | |
| scrape_options={ | |
| 'formats': ['markdown'] | |
| } | |
| ) | |
| # Save the data | |
| if crawl_result and crawl_result.data: | |
| full_knowledge_base = "" | |
| for page in crawl_result.data: | |
| url = page.metadata.source_url if page.metadata else 'Unknown URL' | |
| full_knowledge_base += f"\n\n# SOURCE: {url}\n" | |
| full_knowledge_base += page.markdown or '' | |
| OUTPUT_FILE.parent.mkdir(exist_ok=True) | |
| OUTPUT_FILE.write_text(full_knowledge_base, encoding="utf-8") | |
| print(f"β Success! Website saved to '{OUTPUT_FILE}'") | |
| else: | |
| print("β Crawl Failed:", crawl_result) | |
| if __name__ == "__main__": | |
| main() | |