descraper 0.2.3
A robust web scraping pipeline with smart static/dynamic fallback and semantic text classification.
License: MIT
Requires Python: >=3.8

# DeScraper 🕷️

DeScraper is a lightweight and intelligent Python library that converts web pages into clean, structured, and LLM-ready text, while also discovering all links for easy crawling.

```python
from descraper import run_scrape

# Scrape an article, a list, or a table-heavy page
data = run_scrape("https://en.wikipedia.org/wiki/List_of_Byzantine_emperors")

# Get clean, LLM-ready markdown content and all links
print(data['content'])
print(data['links']['internal'])
```

---

<details>
<summary><strong>🇬🇧 English Documentation</strong> (Click to expand)</summary>

### Key Features

*   🧠 **AI-Ready Content:** Converts messy HTML into clean Markdown, including full support for converting `<table>` elements into Markdown tables. Perfect for RAG pipelines.
*   🚀 **Smart Strategy:** Automatically switches from a fast static scraper to a full browser engine (`Selenium`) if JavaScript rendering is detected or needed.
*   🛡️ **Noise Reduction:** Intelligently removes ads, navigation menus, footers, and other boilerplate to isolate the main content of a page.
*   📦 **Production-Ready:** Built-in retries, timeouts, and user-agent management for robust and reliable scraping.

### Installation

```bash
pip install descraper
```
*Note: The dynamic mode requires Firefox. The necessary driver is downloaded automatically.*

### Output Structure

DeScraper returns a dictionary, with the most important key being `content`: a clean, LLM-ready string of the page's main information.

```json
{
  "url": "https://example.com/actual-content",  # Final URL after redirects
  "original_url": "http://example.com",         # The URL you provided
  "title": "Example Domain",
  "content": "# Title\n\nThe main article text, cleaned and formatted in markdown, including tables...",
  "links": {
    "internal": ["https://.../page1", "https://.../page2"],
    "external": ["https://google.com..."]
   },
  "structured_text": "[...]",
  "images": "[...]"
}
```

</details>

<br>

<details>
<summary><strong>🇹🇷 Türkçe Dokümantasyon</strong> (Genişletmek için tıklayın)</summary>

### Temel Özellikler

*   🧠 **Yapay Zekaya Hazır İçerik:** Karışık HTML'i, `<table>` etiketlerini Markdown tablolarına dönüştürme dahil, temiz Markdown metnine çevirir. RAG sistemleri için idealdir.
*   🚀 **Akıllı Strateji:** JavaScript ile render edilen siteleri veya zayıf içeriği algıladığında, hızlı statik scraper'dan tam bir tarayıcı motoruna (`Selenium`) otomatik olarak geçer.
*   🛡️ **Gürültü Engelleme:** Reklamları, menüleri, footer'ları ve diğer alakasız şablonları akıllıca temizleyerek sayfanın ana içeriğini izole eder.
*   📦 **Production Seviyesinde:** Dayanıklı ve güvenilir scraping için yerleşik tekrar deneme (retry), zaman aşımı (timeout) ve user-agent yönetimi içerir.

### Kurulum

```bash
pip install descraper
```
*Not: Dinamik mod için Firefox tarayıcısı gereklidir. Gerekli sürücü otomatik olarak indirilir.*

### Çıktı Yapısı

DeScraper, en önemlisi `content` anahtarı olan bir sözlük (dictionary) döndürür. Bu anahtar, sayfanın ana bilgisinin temiz, LLM'ye hazır bir metin halini içerir.

```json
{
  "url": "https://...",
  "title": "Sayfa Başlığı",
  "content": "# Başlık\n\nTablolar dahil, temizlenmiş ve markdown formatında ana metin...",
  "links": {
    "internal": ["https://.../sayfa1", "https://.../sayfa2"],
    "external": ["https://google.com..."]
   },
  "structured_text": "[...]",
  "images": "[...]"
}
```

</details>

---

## License

This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.