SoloCodigo

CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: JGMaster en Domingo 4 de Junio de 2017, 20:04

Título: Inconveniente al obtener datos de una web "WebBrowser"
Publicado por: JGMaster en Domingo 4 de Junio de 2017, 20:04
Muy buen dia a todos, soy nuevo en el foro y vengo hoy a solicitar su ayuda con un pequeño inconveniente que me ha surgido con una app que estoy creando esta extrae informacion de una web estoy usando la libreria HtmlAgilityPack para obtener el documento html y poder acceder a sus componentes pero solo puedo acceder a algunas partes a otras no. Ej. con esto puedo acceder a la descripcion, titulo,fecha de publicacion, nombre del canal, pero no la lista de videos relacionados, me dice que el XPath es incorrecto, pero lo estoy copiando directamente de la pagina y no tengo idea del porque pasa esto,  vengo aca para ver si alguno tiene idea de como resolver este detalle, cualquier ayuda es bien recibida.

Código: C#
  1.  
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Drawing;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows.Forms;
  11. using HtmlAgilityPack;
  12. using System.Net;
  13.  
  14. namespace datos
  15. {
  16.     public partial class info : Form
  17.     {
  18.         public String html;
  19.         public Uri url;
  20.         public info()
  21.         {
  22.             InitializeComponent();
  23.            
  24.         }
  25.        
  26.  
  27.  
  28.         private void button1_Click(object sender, EventArgs e)
  29.         {   /*
  30.             for (int i = 1; i < 15; i++ )
  31.             {
  32.                 VeriAl("https://www.youtube.com/watch?v=GLsGOz6tKSA", "//*[@id='watch-related']/li[" + i + "]/div[1]/div[1]/a/span[1]", listBox1);
  33.             }*/
  34.  
  35.  
  36.             VeriAl("https://www.youtube.com/watch?v=GLsGOz6tKSA", "//*[@id='watch-related']/li[1]/div[1]/div[1]/a/span[1]", listBox1);
  37.                                                                    //*[@id='watch-related']/li[2]/div[1]/div[1]/a/span[1]
  38.                                                                    //*[@id="watch7-sidebar-modules"]/div[1]/div/div[2]/ul/li/div[1]/a/span[1]
  39.                                                                    
  40.         }
  41.         public void VeriAl(String Url, String XPath, ListBox CikanSonuc)
  42.         {
  43.             try
  44.             {  
  45.                 url = new Uri(Url);
  46.             }
  47.             catch (UriFormatException)
  48.             {  
  49.                 if (MessageBox.Show("Url Erroneo", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) == DialogResult.OK)
  50.                 {
  51.  
  52.                 }
  53.  
  54.             }
  55.             catch (ArgumentNullException)
  56.             {
  57.                 if (MessageBox.Show("Url Erroneo", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) == DialogResult.OK)
  58.                 {
  59.  
  60.                 }
  61.             }
  62.  
  63.             WebClient client = new WebClient();
  64.             client.Encoding = Encoding.UTF8;
  65.  
  66.             try
  67.             {
  68.                 html = client.DownloadString(url);
  69.            
  70.             }
  71.             catch(WebException)
  72.            
  73.             {
  74.                 if (MessageBox.Show("Url Erroneo", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) == DialogResult.OK)
  75.                 {
  76.  
  77.                 }
  78.             }
  79.  
  80.             HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
  81.             doc.LoadHtml(html);
  82.             try
  83.             {
  84.                 CikanSonuc.Items.Add(doc.DocumentNode.SelectSingleNode(XPath).InnerText);
  85.             }
  86.             catch (NullReferenceException)
  87.             {       //Aca me tira error me dice que XPath es incorrecto.
  88.                 if (MessageBox.Show("XPath Erroneo", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) == DialogResult.OK)
  89.                 {
  90.  
  91.                 }
  92.            
  93.             }
  94.         }
  95.  
  96.        
  97.  
  98.        
  99.     }
  100. }
  101.  
  102.  
  103.  
  104.