public void PartidosEquipo(Response response) { var torneos = response.Css(".liga"); foreach (var torneo in torneos) { var torneoNode = torneo.Css(".title"); if (torneoNode.Any()) { var nombreTorneo = torneoNode[0].ChildNodes[2].InnerTextClean; Console.WriteLine(nombreTorneo); var nuevoTorneo = CrearTorneo(nombreTorneo); var partidosTorneo = torneo.Css(".nonplayingnow"); var filtro = new ClasesPartido() { Fecha = ".time", EquipoLocal = ".team-home", NodoLocal = 1, EquipoVisitante = ".team-away", NodoVisitante = 0, Resultado = ".score.bold", NodoResultado = 0, EsEquipo = true }; CrearPartidos(partidosTorneo, filtro, nuevoTorneo.Id); } } }
public override void Parse(Response response) { var torneoNodo = response.Css(".titular-data"); var nombreTorneo = torneoNodo[0].ChildNodes[5].InnerTextClean; var torneo = CrearTorneo(nombreTorneo); var partidos = response.Css(".vevent"); var filtro = new ClasesPartido() { Fecha = ".fecha", EquipoLocal = ".equipo1", NodoLocal = 2, EquipoVisitante = ".equipo2", NodoVisitante = 2, Resultado = ".rstd", NodoResultado = 9, EsEquipo = false }; CrearPartidos(partidos, filtro, torneo.Id); }
private string CrearPartidos(HtmlNode[] partidos, ClasesPartido filtroNodos, Guid idTorneo) { var fechaPartido = string.Empty; foreach (var partido in partidos) { var equipoLocal = string.Empty; var equipoVisitante = string.Empty; var resultado = string.Empty; var estadio = string.Empty; var partidoNuevo = new Partido(); partidoNuevo.TorneoId = idTorneo; HtmlNode[] fechaNodo = partido.Css(filtroNodos.Fecha); if (fechaNodo.Any() && fechaNodo[0].ChildNodes.Any()) { fechaPartido = fechaNodo[0].ChildNodes[0].InnerTextClean; var fechaDividida = fechaPartido.Split(' '); var dia = 0; int.TryParse(fechaDividida[0], out dia); var año = 0; int.TryParse(fechaDividida[2], out año); var mes = fechaDividida[1]; var enumMes = Meses.Ene; Enum.TryParse(mes, out enumMes); DateTime fechaPartidoReal = new DateTime((año + 2000), (int)enumMes, dia); partidoNuevo.Fecha = fechaPartidoReal; } var equipoLocalNodo = partido.Css(filtroNodos.EquipoLocal); if (equipoLocalNodo.Any() && equipoLocalNodo[0].ChildNodes.Length >= filtroNodos.NodoLocal) { equipoLocal = equipoLocalNodo[0].ChildNodes[filtroNodos.NodoLocal].InnerTextClean; var existeEquipo = _Equipos.FirstOrDefault(x => x.Nombre.ToLower() == equipoLocal.ToLower()); if (existeEquipo == null) { existeEquipo = FachadaContenedor.Resolver <IEquipoServicioAplicacion>() .Guardar(new Equipo() { Activo = true, Nombre = equipoLocal, }); _Equipos.Add(existeEquipo); } partidoNuevo.EquipoLocalId = existeEquipo.Id; } var equipoVisitanteNodo = partido.Css(filtroNodos.EquipoVisitante); if (equipoVisitanteNodo.Any() && equipoVisitanteNodo[0].ChildNodes.Length >= filtroNodos.NodoVisitante) { equipoVisitante = equipoVisitanteNodo[0].ChildNodes[filtroNodos.NodoVisitante].InnerTextClean; var existeEquipo = _Equipos.FirstOrDefault(x => x.Nombre.ToLower() == equipoVisitante.ToLower()); if (existeEquipo == null) { existeEquipo = FachadaContenedor.Resolver <IEquipoServicioAplicacion>() .Guardar(new Equipo() { Activo = true, Nombre = equipoVisitante, }); _Equipos.Add(existeEquipo); } partidoNuevo.EquipoVisitanteId = existeEquipo.Id; } var resultadoNodo = partido.Css(filtroNodos.Resultado); if (resultadoNodo.Any() && resultadoNodo[0].ChildNodes.Any()) { resultado = resultadoNodo[0].ChildNodes[filtroNodos.NodoResultado].InnerTextClean; if (!string.IsNullOrEmpty(resultado)) { var divisionResultado = resultado.Split('-'); if (divisionResultado.Any() && divisionResultado.Length > 1) { var golesLocal = 0; int.TryParse(divisionResultado[0], out golesLocal); partidoNuevo.GolesLocal = golesLocal; var golesVisitante = 0; int.TryParse(divisionResultado[1], out golesVisitante); partidoNuevo.GolesVisitante = golesVisitante; } } if (!filtroNodos.EsEquipo) { estadio = resultadoNodo[0].ChildNodes[5].InnerTextClean; var existeEstadio = _Estadios.FirstOrDefault(x => x.Nombre.ToLower() == estadio.ToLower()); if (existeEstadio == null) { var estadioNuevo = FachadaContenedor.Resolver <IEstadioServicioAplicacion>().Guardar(new Estadio() { Nombre = estadio }); _Estadios.Add(estadioNuevo); } partidoNuevo.EstadioId = existeEstadio.Id; } var detallePartido = filtroNodos.EsEquipo ? resultadoNodo[0].ChildNodes[filtroNodos.NodoResultado] : resultadoNodo.CSS(".url").First(); var linkDetallePartido = detallePartido.Attributes["href"]; partidoNuevo.Hora = linkDetallePartido; CrearPartido(partidoNuevo); this.Request(linkDetallePartido, DetallePartido); } } return(fechaPartido); }