#c# #wpf #web-crawler #html-agility-pack #dom
#c# #wpf #веб-сканер #html-agility-pack #dom
Вопрос:
В настоящее время я использую C # 4.0 и htmlagilitypack 1.4.0 для загрузки веб-страниц и извлечения информации.
Можно загружать веб-страницы с помощью приведенного ниже способа, используя htmlagilitypack
HtmlWeb hw = new HtmlWeb();
HtmlDocument myDoc = hw.Load("URL");
Но вы не можете установить кодировку таким образом. Итак, чтобы иметь возможность установить кодировку, приведенный ниже метод работает.
HtmlDocument myDoc=new HtmlDocument();
StreamReader reader = new StreamReader(WebRequest.Create(textBox1.Text).GetResponse().GetResponseStream(), Encoding.GetEncoding("iso-8859-9")); //put your encoding
myDoc.Load(reader);
Но мне интересно, будет ли какая-либо разница или разница в производительности между этими 2 методами. Что было бы выгодно и невыгодно для этих 2 методов. Спасибо.
C # 4.0, wpf, htmlagilitpack, сканирование страницы
Ответ №1:
Между этими двумя способами нет разницы. HtmlWeb.Load(string url)
внутренние вызовы HtmlDocument.Load(TextReader reader)
как следующий стек вызовов HtmlWeb.Load(string url), для просмотра которого я использовал .NET Reflector.
HtmlWeb.Load(string url)
----> HtmlDocument.Load(string url, Encoding encoding(=this.OverrideEncoding))
----> HtmlDocument.Load(TextReader reader)
Это говорит о том, что вы можете использовать HtmlWeb.Переопределите свойство encoding для установки кодировки, и если вы не установите кодировку и просто вызовете HtmlWeb.Load(string url), HtmlWeb.Load(string url)
вызовет HtmlDocument.DetectEncodingAndLoad(string path, bool detectEncoding(=true))
.