Digamos que tengo una lista de 10 fuentes de noticias que me gusta importar a mi base de datos local. Necesito abrir cada una de estas páginas de noticias externas, extraer el contenido principal y guardarlo. La estructura html en todas estas páginas es diferente. Algunos usan div, mientras que otros usan etiquetas de artículos.
Sé que puedo usar el objeto HttpWebRequest para abrir la página y usar HtmlAgilityPack para cargar el documento [HTML].
HttpWebRequest oReq = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse resp = (HttpWebResponse)oReq.GetResponse();
var doc = new HtmlAgilityPack.HtmlDocument();
doc.Load(resp.GetResponseStream());
Sin embargo, no sé cómo podría apuntar al elemento principal sin saber el tipo.
¿Es lo que estoy tratando de hacer incluso posible?
HTML Agility Pack es EXTREMADAMENTE útil, pero el código que lo usa generalmente tiene que ser personalizado a la estructura del sitio.
Puedes intentar ser genérico y adaptable, pero incluso los "Big Boys" como Evernote tienen que tener diferentes opciones de recorte para diferentes diseños de sitios.
Lo primero que vería: si es noticia, ¿debería utilizar sus fuentes RSS en su lugar? (No solo técnicamente, sino también legalmente. Consulte las secciones de términos de servicio de los sitios).
Si tiene que analizar su sitio, sugeriría crear una interfaz y una clase separada para cada sitio que implemente la interfaz. Ajusta cada clase para que coincida con la estructura del sitio respectivo.