---
name: fetch_and_parse_url
kind: function
lang: py
domain: core
version: "1.0.0"
purity: impure
signature: "fetch_and_parse_url(url: str, timeout: float = 30.0) -> str"
description: "Descarga una pagina web y la convierte a markdown. Combina detect_url_type + fetch HTML + html_to_markdown en una sola operacion."
tags: [http, fetch, html, markdown, parse, url, scraping, pendiente-usar]
uses_functions:
  - detect_url_type_py_core
  - html_to_markdown_py_core
uses_types: []
returns: []
returns_optional: false
error_type: "error_go_core"
imports: ["httpx"]
params:
  - name: url
    desc: "URL a descargar y convertir"
  - name: timeout
    desc: "timeout en segundos para el HTTP request"
output: "string markdown con el contenido convertido desde la pagina web"
tested: false
tests: []
test_file_path: ""
file_path: "python/functions/core/fetch_and_parse_url.py"
---

## Ejemplo

```python
from core.fetch_and_parse_url import fetch_and_parse_url

# Descargar y convertir una pagina web
md = fetch_and_parse_url("https://example.com")
print(md)

# Con timeout personalizado
md = fetch_and_parse_url("https://en.wikipedia.org/wiki/Python", timeout=15.0)
```

## Notas

Algoritmo:
1. `detect_url_type(url)` determina el tipo de contenido (por patron, extension o HEAD request).
2. Si es `code_repository` → lanza Exception (requiere git clone, no HTTP fetch).
3. Si es `pdf` → lanza Exception (requiere pdfminer/pypdf, no incluido).
4. `httpx.get(url)` descarga el contenido con follow_redirects.
5. Si es `webpage` o Content-Type HTML → `html_to_markdown(raw_html)`.
6. Si es `markdown`, `text` o codigo → retorna el texto directamente.

Lanza `Exception` con mensaje descriptivo en cualquier fallo de red o tipo no soportado.

Funcion impura: hace I/O (HTTP requests).
