3253828fef
Add complete navegator system for stealthy browser automation: - CDP client with WebSocket communication - Browser API with navigation, storage, network, runtime - Stealth flags and anti-detection scripts - Persistent profile support - Examples and comprehensive documentation Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
151 lines
4.8 KiB
Markdown
151 lines
4.8 KiB
Markdown
# YouTube Comments Scraper
|
|
|
|
Ejemplo de uso de **navegator** para extraer comentarios de videos de YouTube de manera sigilosa.
|
|
|
|
## Características
|
|
|
|
- ✅ Extracción de comentarios con autor, texto y likes
|
|
- ✅ Modo headless para producción
|
|
- ✅ Ventana pequeña para desarrollo/testing
|
|
- ✅ Manejo automático de banner de cookies
|
|
- ✅ Scroll automático para activar lazy loading
|
|
- ✅ Stealth flags para evitar detección
|
|
- ✅ Perfiles persistentes (cookies y sesiones se mantienen)
|
|
|
|
## Uso
|
|
|
|
### Modo básico (headless por defecto)
|
|
```bash
|
|
go run examples/youtube_comments.go
|
|
```
|
|
|
|
### Modo visible (para debugging)
|
|
```bash
|
|
go run examples/youtube_comments.go -visible
|
|
```
|
|
|
|
### Especificar video y número de comentarios
|
|
```bash
|
|
go run examples/youtube_comments.go -url "https://www.youtube.com/watch?v=VIDEO_ID" -n 20
|
|
```
|
|
|
|
### Todas las opciones
|
|
```bash
|
|
go run examples/youtube_comments.go -visible -url "URL_DEL_VIDEO" -n 15
|
|
```
|
|
|
|
## Parámetros
|
|
|
|
| Flag | Descripción | Default |
|
|
|------|-------------|---------|
|
|
| `-visible` | Ejecutar con interfaz gráfica (para debugging) | `false` (headless) |
|
|
| `-url` | URL del video de YouTube | Video de ejemplo |
|
|
| `-n` | Número máximo de comentarios a extraer | `10` |
|
|
|
|
## Compilar binario
|
|
|
|
Para crear un binario standalone:
|
|
|
|
```bash
|
|
go build -o youtube-comments examples/youtube_comments.go
|
|
```
|
|
|
|
Luego usar:
|
|
```bash
|
|
# Modo headless (default)
|
|
./youtube-comments -n 20
|
|
|
|
# Modo visible para debugging
|
|
./youtube-comments -visible -n 20
|
|
```
|
|
|
|
## Ejemplo de salida
|
|
|
|
```
|
|
🚀 Lanzando navegador...
|
|
✅ Navegador iniciado. Perfil: /home/user/.navegator/profiles/youtube-scraper
|
|
📺 Navegando a YouTube: https://www.youtube.com/watch?v=S1J8rx2Jw98
|
|
📊 Extrayendo hasta 5 comentarios
|
|
⏳ Esperando a que cargue la página...
|
|
🍪 Cookie banner clicked
|
|
📜 Haciendo scroll para cargar comentarios...
|
|
⏳ Esperando a que aparezcan los comentarios...
|
|
📝 Extrayendo comentarios...
|
|
|
|
================================================================================
|
|
📋 COMENTARIOS EXTRAÍDOS:
|
|
================================================================================
|
|
|
|
1. @herrpez (1K likes)
|
|
Insane move. Guy is clearly flying that route in August...
|
|
|
|
2. @roland_does_things (336 likes)
|
|
This is the moment you treat all your friends to a great trip to Sicily...
|
|
|
|
3. @Starcraft2Krauts (440 likes)
|
|
Getting money from Wizz air took me months and threatening a lawsuit...
|
|
|
|
================================================================================
|
|
📌 Información del Video:
|
|
================================================================================
|
|
Título: I Tried to Profit From Flight Delays Using Data
|
|
Vistas: 43,845 views
|
|
|
|
✅ Extracción completada exitosamente!
|
|
```
|
|
|
|
## Cómo funciona
|
|
|
|
1. **Lanzamiento del navegador**: Inicia Chrome/Chromium con flags stealth
|
|
2. **Navegación**: Carga el video de YouTube especificado
|
|
3. **Cookies**: Detecta y acepta automáticamente el banner de cookies
|
|
4. **Scroll**: Hace scroll progresivo para activar el lazy loading de comentarios
|
|
5. **Extracción**: Usa JavaScript para extraer los datos de cada comentario
|
|
6. **Formato**: Muestra los comentarios de manera legible en la terminal
|
|
|
|
## Selectores utilizados
|
|
|
|
El script utiliza los siguientes selectores CSS de YouTube:
|
|
|
|
- `ytd-comment-thread-renderer`: Contenedor de cada comentario
|
|
- `#author-text`: Nombre del autor
|
|
- `#content-text`: Texto del comentario
|
|
- `.published-time-text a`: Fecha de publicación
|
|
- `#vote-count-middle`: Contador de likes
|
|
|
|
## Notas
|
|
|
|
- **Perfiles persistentes**: El navegador guarda cookies y sesiones en `~/.navegator/profiles/youtube-scraper/`
|
|
- **Timeouts**: Si la página tarda mucho en cargar, aparecerá una advertencia pero continuará la ejecución
|
|
- **Stealth**: El navegador se configura con flags anti-detección para evitar ser bloqueado
|
|
- **Ventana pequeña**: Se usa ventana de 600x400 para menor consumo de recursos
|
|
- **Headless por defecto**: El navegador corre en segundo plano sin interfaz gráfica (usa `-visible` para debugging)
|
|
|
|
## Troubleshooting
|
|
|
|
### No se encuentran comentarios
|
|
|
|
- Verifica que el video tenga comentarios habilitados
|
|
- Aumenta el tiempo de espera modificando los `time.Sleep()`
|
|
- Ejecuta con `-visible` para ver qué está pasando en el navegador
|
|
|
|
### Timeout al navegar
|
|
|
|
- Es normal, el script continúa de todos modos
|
|
- YouTube carga muchos recursos en segundo plano
|
|
- La advertencia no afecta la extracción de comentarios
|
|
|
|
### Selectores no funcionan
|
|
|
|
- YouTube puede cambiar su estructura HTML
|
|
- Ejecuta con `-visible` e inspecciona la página
|
|
- Actualiza los selectores en el script según sea necesario
|
|
|
|
## Próximas mejoras
|
|
|
|
- [ ] Exportar comentarios a JSON
|
|
- [ ] Extraer respuestas a comentarios
|
|
- [ ] Ordenar por fecha, likes, etc.
|
|
- [ ] Extraer información adicional (avatares, badges, etc.)
|
|
- [ ] Scroll infinito para extraer todos los comentarios
|