Tôi cố gắng để trích xuất một link
sử dụng xpath
từ url dưới đây đề cậpNullReferenceException trong HtmlAgilityPack
string url = "http://www.album-cover-art.org/search.php?q=Ruin+-+Live+Album+Version+Lamb+of+God"
Mã của tôi:
HtmlAgilityPack.HtmlWeb web = new HtmlAgilityPack.HtmlWeb();
HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();
htmlDoc = web.Load(url); //Exception generated here Line 23
if (htmlDoc.DocumentNode != null)
{
HtmlNode linkNode = htmlDoc.DocumentNode.SelectSingleNode(".//*[@id='related_search_row']/img/@src");
if (linkNode != null)
Console.WriteLine(linkNode.InnerText);
}
Đoạn mã trên biên dịch tốt nhưng khi tôi cố gắng chạy nó tạo ra một ngoại lệ
Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object.
Hoàn thành stacktrace
System.NullReferenceException: Object reference not set to an instance of an object.
at HtmlAgilityPack.HtmlDocument.ReadDocumentEncoding(HtmlNode node) in C:\Source\htmlagilitypack\Trunk\HtmlAgilityPack\HtmlDocument.cs:line 1916
at HtmlAgilityPack.HtmlDocument.PushNodeEnd(Int32 index, Boolean close) in C:\Source\htmlagilitypack\Trunk\HtmlAgilityPack\HtmlDocument.cs:line 1805
at HtmlAgilityPack.HtmlDocument.Parse() in C:\Source\htmlagilitypack\Trunk\HtmlAgilityPack\HtmlDocument.cs:line 1468
at HtmlAgilityPack.HtmlDocument.Load(TextReader reader) in C:\Source\htmlagilitypack\Trunk\HtmlAgilityPack\HtmlDocument.cs:line 769
at HtmlAgilityPack.HtmlWeb.Get(Uri uri, String method, String path, HtmlDocument doc, IWebProxy proxy, ICredentials creds) in C:\Source\htmlagilitypack\Trunk\HtmlAgilityPack\HtmlWeb.cs:line 1515
at HtmlAgilityPack.HtmlWeb.LoadUrl(Uri uri, String method, WebProxy proxy, NetworkCredential creds) in C:\Source\htmlagilitypack\Trunk\HtmlAgilityPack\HtmlWeb.cs:line 1563
at HtmlAgilityPack.HtmlWeb.Load(String url, String method) in C:\Source\htmlagilitypack\Trunk\HtmlAgilityPack\HtmlWeb.cs:line 1149
at HtmlAgilityPack.HtmlWeb.Load(String url) in C:\Source\htmlagilitypack\Trunk\HtmlAgilityPack\HtmlWeb.cs:line 1107
at ScreenScrapping.Program.Main(String[] args) in c:\Users\ranveer\csharp\ScreenScrapping\ScreenScrapping\Program.cs:line 23
Vì vậy, câu hỏi của tôi là lý do tại sao tôi nhận được ngoại lệ này.
Với phiên bản '1.4.3' của mỹ HtmlAgilityPack mẫu của bạn đang làm việc. Bạn sử dụng phiên bản nào? – nemesv
@nemesv: Bây giờ tôi đang sử dụng HtmlAgilityPack ver1.4.3. Bây giờ tôi không nhận được bất kỳ lỗi nào nhưng 'Console.WriteLine (linkNode.InnerText); 'không đưa ra bất kỳ đầu ra nào và không phải' liên kếtNode' là null Tôi đã kiểm tra điều đó. – RanRag
Khi tôi sử dụng xpath '// title/text()' nó hoạt động tốt nhưng khi tôi chuyển sang biểu thức xpath liên quan đến việc thừa nhận các thuộc tính bằng cách sử dụng '/ @ href hoặc/@ src' nó không hoạt động. – RanRag