Web Scraping con c # y HTMLAgilityPack

c# html-agility-pack web-scraping xpath

Pregunta

Captura de pantalla del código y el mensaje de error + valores variables Por lo tanto, el objetivo es tomar una palabra y obtener la parte del habla de la palabra de su definición de Google.

He intentado algunos enfoques diferentes, pero cada vez recibo un error de referencia nulo. ¿Mi código no puede acceder a la página web? ¿Es un problema de firewall, un problema de lógica, un problema de {insertar-problema-aquí}? Realmente desearía tener una vaga idea de lo que está mal.

Gracias por tu tiempo.

Anexo: He intentado " // [@id = \" source - luna \ "] // div " y " // [@id = \" source - luna \ "] / div 1 " como valores XPath.

//attempt 1////////////////////////////////////////////////////////////////////////
            var term = "Hello";
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.urbandictionary.com/define.php?term=" + term);
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();

            StreamReader stream = new StreamReader(response.GetResponseStream());
            string final_response = stream.ReadToEnd();

            MessageBox.Show(final_response); //doesn't execute

//attempt 2////////////////////////////////////////////////////////////////////////
            var url = "https://www.google.co.za/search?q=define+position";
            var content = new System.Net.WebClient().DownloadString(url);
            var webGet = new HtmlWeb();
            var doc = new HtmlAgilityPack.HtmlDocument();
            doc.LoadHtml(content);
     //doc is null at runtime
            HtmlNode ourNode = doc.DocumentNode.SelectSingleNode("//*[@id=\"uid_0\"]/div[1]/div/div[1]/div[2]/div[2]/div[1]/i/span");
            if (ourNode != null)
            {
                richTextBox1.AppendText(ourNode.InnerText);
            }
            else
                richTextBox1.AppendText("null");

//attempt 3////////////////////////////////////////////////////////////////////////
var webGet = new HtmlWeb();
            var doc = webGet.Load("https://www.google.co.za/search?q=define+position");
     //doc is null at runtime
            HtmlNode ourNode = doc.DocumentNode.SelectSingleNode("//*[@id=\"uid_0\"]/div[1]/div/div[1]/div[2]/div[2]/div[1]/i/span");
            if (ourNode != null)
            {
                richTextBox1.AppendText(ourNode.InnerText);
            }
            else
                richTextBox1.AppendText("null");

//attempt 4////////////////////////////////////////////////////////////////////////
string Url = "http://www.metacritic.com/game/pc/halo-spartan-assault";
            HtmlWeb web = new HtmlWeb();
            HtmlAgilityPack.HtmlDocument doc = web.Load(Url);
     //doc is null at runtime
            string metascore = doc.DocumentNode.SelectNodes("//*[@id=\"main\"]/div[3]/div/div[2]/div[1]/div[1]/div/div/div[2]/a/span[1]")[0].InnerText;
            string userscore = doc.DocumentNode.SelectNodes("//*[@id=\"main\"]/div[3]/div/div[2]/div[1]/div[2]/div[1]/div/div[2]/a/span[1]")[0].InnerText;
            string summary = doc.DocumentNode.SelectNodes("//*[@id=\"main\"]/div[3]/div/div[2]/div[2]/div[1]/ul/li/span[2]/span/span[1]")[0].InnerText;
            richTextBox1.AppendText(metascore + " " + userscore + " " + summary);

//attempt 5////////////////////////////////////////////////////////////////////////
             HtmlWeb web = new HtmlWeb();
             HtmlAgilityPack.HtmlDocument html = web.Load("https://www.google.co.za/search?q=define+position");
     //html is null
             var div = html.DocumentNode.SelectNodes("//*[@id=\"uid_0\"]/div[1]/div/div[1]/div[2]/div[2]/div[1]/i/span");
             richTextBox1.AppendText(Convert.ToString(div));

Respuesta popular

Obtiene nulo porque sus XPATHs no son correctas o no pudo encontrar ningún nodo basado en esas XPATHs. ¿Qué estás tratando de lograr aquí?



Related

Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow