HTML Agility包为什么HTML页面没有字符串?

时间:2017-09-01 16:59:09

标签: c# html-agility-pack

错误“HtmlAgilityPack.HtmlNode.SelectSingleNode(...)返回null。” 我的示例代码。

            string url = @"http://www.baza-firm.com.pl/?vm=zabrze&pg=2&b_szukaj=szukaj";
        HtmlWeb web = new HtmlWeb();
        //Process.Start(url); //wyswietlenie strony
        var doc1 = web.Load(url);

        MessageBox.Show(doc1.DocumentNode.OuterHtml.ToString());


        var nazwa = doc1.DocumentNode.SelectSingleNode("//span[@class='przeppoz']").InnerText;
        var ulica = doc1.DocumentNode.SelectSingleNode("//div[@itemprop='streetAddress']").InnerText;
        var kod_pocztowy = doc1.DocumentNode.SelectSingleNode("//div/span[@itemprop='postalCode']").InnerText;
        var miejscowość = doc1.DocumentNode.SelectSingleNode("//div/span[@itemprop='addressLocality']").InnerText;
        var wojewodztwo = doc1.DocumentNode.SelectSingleNode("//div/span[@itemprop='addressRegion']").InnerText;
        var telefon = doc1.DocumentNode.SelectNodes("//div[@class='divSMV_tel1 clearBoth']");
        List<string> lista_tel = new List<string>();
        foreach (var node in telefon)
        {
            lista_tel.Add(node.InnerText);
        }

        MessageBox.Show("nazwa " + nazwa
                        + "\nkod pocztowy " + kod_pocztowy
                        + "\nulica " + ulica
                        + "\nkod pocztowy " + kod_pocztowy
                        + "\nmiejscowość " + miejscowość
                        + "\nwojewództwo " + wojewodztwo
                        + "\ntelefon " + lista_tel[0].ToString());

以前工作过的现在显示一个空白页面。为什么不能使用敏捷包?

1 个答案:

答案 0 :(得分:0)

您的服务器返回404 - Not Found作为响应状态,但也会返回您期望的html内容。

因此,通过稍微更改下载代码,您的解析代码可以正常工作......

string url = @"http://www.baza-firm.com.pl/?vm=zabrze&pg=2&b_szukaj=szukaj";
var doc1 = new HtmlAgilityPack.HtmlDocument();

using (var client = new HttpClient())
{
    var resp = await client.GetAsync(url);
    MessageBox.Show(resp.StatusCode.ToString());
    var html = await resp.Content.ReadAsStringAsync();
    doc1.LoadHtml(html);
}


MessageBox.Show(doc1.DocumentNode.OuterHtml.ToString());
.....
......