En este video abarcare todo lo que debes saber cómo programador para cancelar bajo el nuevo esquema del SAT para la cancelación de facturas electrónicas que entro en vigor este pasado 1 de noviembre del 2018.
Categoría: C#
LINQ en C# .Net básico en 10 minutos
En este video explico rápidamente como se puede utilizar LINQ en c# .Net
Código del video: https://hdeleon.net/linq-introduccion-y-ejemplos-rapidos-en-c-net/
Curso de Web scraping en C# .Net
En este nuevo curso te mostrare como puedes hacer web scraping de manera fácil y rápida con C# .Net.
1.- Obtener contenido HTML, seleccionar elementos por clase, nombre, id
En este video te muestro como puedes seleccionar elementos de una página web de manera natural, utilizando su clase, su id o su nombre de etiqueta.
2.- Guardar contenido de un sitio web en base de datos
En este segundo video te enseñare a como puedes guardar el contenido de un sitio web en una base de datos.
3.- Descargar todas las imágenes de una url
En este tercer video te enseñare como puedes descargarte todas las imagenes que se visualizan en una url de un sitio web.
4.- Descargar todas las imágenes de TODO un sitio web
En este video te enseñare a como navegar por todas las ligas de una url e ir recursivamente url por url del sitio entero descargando las imagenes.
Código fuente
using HtmlAgilityPack;
using ScrapySharp.Extensions;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using WebScraping.Models;
namespace WebScraping
{
class Program
{
static List<string> lstYaInvocadas = new List<string>();
static List<string> lstImagenesDescargadas = new List<string>();
static string pathImages = @"C:\tuRuta\";
static void Main(string[] args)
{
HtmlWeb oWeb = new HtmlWeb();
string url = "https://hdeleon.net/";
/*Video: 2 - Obtener titles ***********************************************/
using (webscrapingEntities db = new webscrapingEntities()) {
for (int i = 1; i <= 32; i++) {
if (i > 1)
url += "/page/" + i + "/";
HtmlDocument doc2 = oWeb.Load(url);
foreach (var Nodo in doc2.DocumentNode.CssSelect(".entry-title"))
{
var NodoAnchor = Nodo.CssSelect("a").First();
var oTitle = new titles();
oTitle.title = NodoAnchor.InnerHtml;
db.titles.Add(oTitle);
//MisTitulos.Add(NodoAnchor.InnerHtml);
}
Console.WriteLine("se analizo la pagina: "+i);
}
db.SaveChanges();
}
/* Video 3 - Ejemplo de robar imagenes ********************************************/
HtmlDocument doc = oWeb.Load(url);
//obtenemos las imagenes
int num = 0;
foreach (var Nodo in doc.DocumentNode.CssSelect("img"))
{
Console.WriteLine("Imagen robada: " + Nodo.GetAttributeValue("src"));
using (WebClient oClient = new WebClient())
{
string urlImagen = Nodo.GetAttributeValue("src");
oClient.DownloadFile(new Uri(urlImagen), pathImages + num + ".jpg");
}
num++;
}
/*Video 4 - Obtener todas las imagenes de todo el sitio web *************************/
HtmlDocument doc3 = oWeb.Load(url);
//obtener las imagenes de la url
foreach (var Nodo in doc3.DocumentNode.CssSelect("img"))
{
// Console.WriteLine("Imagen robada: " + Nodo.GetAttributeValue("src"));
using (WebClient oClient = new WebClient())
{
string urlImagen = Nodo.GetAttributeValue("src");
string[] arrUrlImagen = urlImagen.Split('/');
string nombreImagen = pathImages + arrUrlImagen[arrUrlImagen.Length - 1];
if (!lstImagenesDescargadas.Contains(arrUrlImagen[arrUrlImagen.Length - 1]))
{
oClient.DownloadFile(new Uri(urlImagen), nombreImagen);
lstImagenesDescargadas.Add(arrUrlImagen[arrUrlImagen.Length - 1]);
}
}
}
//recursividad urls
foreach (var Nodo in doc3.DocumentNode.CssSelect("a"))
{
string urlSon = Nodo.GetAttributeValue("href");
if (!lstYaInvocadas.Contains(urlSon) && urlSon.StartsWith("https://hdeleon.net/"))
{
Console.WriteLine(urlSon);
lstYaInvocadas.Add(urlSon);
ObtienesImagenes(urlSon);
}
}
}
#region Helpers
private static void ObtienesImagenes(string url,string tab="")
{
try
{
HtmlWeb oWeb = new HtmlWeb();
HtmlDocument doc3 = oWeb.Load(url);
foreach (var Nodo in doc3.DocumentNode.CssSelect("img"))
{
// Console.WriteLine("Imagen robada: " + Nodo.GetAttributeValue("src"));
using (WebClient oClient = new WebClient())
{
string urlImagen = Nodo.GetAttributeValue("src");
string[] arrUrlImagen = urlImagen.Split('/');
string nombreImagen =pathImages+ arrUrlImagen[arrUrlImagen.Length - 1];
if (!lstImagenesDescargadas.Contains(arrUrlImagen[arrUrlImagen.Length - 1]))
{
oClient.DownloadFile(new Uri(urlImagen), nombreImagen);
lstImagenesDescargadas.Add(arrUrlImagen[arrUrlImagen.Length - 1]);
}
}
}
foreach (var Nodo in doc3.DocumentNode.CssSelect("a") )
{
string urlSon = Nodo.GetAttributeValue("href");
if ( !lstYaInvocadas.Contains(urlSon) && urlSon.StartsWith("https://hdeleon.net/"))
{
Console.WriteLine(tab+urlSon);
lstYaInvocadas.Add(urlSon);
ObtienesImagenes(urlSon, tab + ">");
}
}
}
catch { }
}
#endregion
}
}
Patrones de diseño en C# .Net
Los patrones de diseño son un conjunto de técnicas que nos ayudaran a no reinventar la rueda, con estas técnicas ya tendremos soluciones a problemas comunes.
El aprender Patrones de diseño es darle un brinco a tu conocimiento como programador, el cual te ayudara a tener lista la solución de problemas a los que te enfrentaras en el día a día.
Si deseas un curso de Patrones de diseño en C# con ejemplos reales de su uso da CLIC AQUÍ.
Puedes ver el listado de patrones de diseño a continuación o si lo deseas puedes verlo en youtube dando clic aquí:
-
Singleton en C# .Net | Patrones de diseño | design patterns | #1
-
Prototype shallow en C# .Net | Patrones de diseño | design patterns | #2
-
Prototype deep en C# .Net | Patrones de diseño | design patterns | #3
-
Factory Method en C# .Net | Patrones de diseño | design patterns | #4
-
Strategy en C# .Net | Patrones de diseño | design patterns | #5
-
Mediator en C# .Net | Patrones de diseño | design patterns | #6
-
State en C# .Net | Patrones de diseño | design patterns | #7
-
Composite en C# .Net | Patrones de diseño | design patterns | #8
-
Inyección de dependencias | Patrones de diseño | design patterns | #9 💉
-
Patrón de diseño inyección de dependencias | Ejemplo en MVC .Net Core 💉
Crear CRUD en Windows Forms con C# .Net, Entity Framework y Sql Server
En este video te enseñare a crear un CRUD en Windows forms, después de ver el video serás capaz de obtener los datos de una base de datos, insertar datos, editar datos y eliminaros, todo a través de una interfaz hecha en Windows forms.
Factory Method en C# .Net, Patrones de diseño, design patterns, #4
En este video te explicare el patrón de diseño factory method, también te explicare cuando usarlo y como crearlo. Todo en c# .net.
Juego de la vida en C# .Net, autómata celular, Universo holograma
En este video te enseñare como representar el juego de la vida en C# .Net paso por paso, al igual que te daré una explicación breve sobre que significa y para qué sirve este sistema determinista.
¿Cómo hacer un HTML Helper en MVC .Net? | C# .Net
En este video te enseñare como puedes hacer tus propios html helpers, y así ahorrarte código html cuando realizas tus vistas.
Pilas y Colas en C# .Net, Lifo, Fifo, Queue y Stack
En este video te enseñare como se pueden manejar pilas y colas en c# .Net con las clases Queue y Stack.
Conjunto de Mandelbrot en C# .Net, Fractales, Mandelbrot Set
En este video te explicare el conjunto de mandelbrot, y como se puede representar en C# .Net.
Código
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
MandelbrotSet();
}
private void MandelbrotSet()
{
int width = pictureBox1.Width;
int heigh = pictureBox1.Height;
Bitmap bmp = new Bitmap(width,heigh);
for (int row=0;row<heigh;row++)
{
for (int col=0;col<width;col++)
{
double c_re = (col - width / 2.0) * 4.0 / width;
double c_im = (row - Height / 2.0) * 4.0 / heigh;
int iteracion = 0;
double x = 0, y = 0;
while (iteracion<1000 && ((x*x)+(y*y))<=4)
{
double x_temp = (x * x) - (y * y) + c_re;
y = 2 * x * y + c_im;
x = x_temp;
iteracion++;
}
if (iteracion < 1000)
bmp.SetPixel(col, row, Color.FromArgb(iteracion%128,iteracion%50*5,iteracion%10));
else
bmp.SetPixel(col, row, Color.Black);
}
}
pictureBox1.Image = bmp;
}
}
