利用 HtmlAgilityPack 中的 HtmlDocument 对象的最佳方式?
the best way to leverage an HtmlDocument object from the HtmlAgilityPack?
我有一个代码片段可以加载 html 文档和 return 以供进一步操作。
private HtmlDocument LoadPage(string path)
{
var web = new HtmlWeb();
var doc = web.Load(url + path);
return doc;
}
我创建了更小的方法来通过以下方式提取我想要的信息:
public string getNameInfo(String path)
{
HtmlDocument doc = LoadPage(path);
string tag = doc.DocumentNode.SelectSingleNode("//*[@id='header_action']/div[1]/div[2]/h2").InnerText.Replace("\n", String.Empty);
return tag;
}
我有另一种方法return我想通知另一个标签
public string getCodeInfo(String path)
{
HtmlDocument doc = LoadPage(path);
string tag = doc.DocumentNode.SelectSingleNode("//*[@id='header_action']/div[1]/div[2]/h1").InnerText.Replace("\n", String.Empty);
return tag;
}
今天我可以提取我想要的信息,但我想重复使用已经查阅过的HtmlDocument,并从页面中享受一次下载。
我尝试了一些解决方案,但我做不到,有没有什么方法可以采用单个 HtmlDocument 并将其分解为更小的函数来填充我的变量,而无需对加载方法进行多次查询。建议是对 LoadPage 方法执行单个查询并将其用于所有次要功能。
感谢收听
我不确定我是否理解正确。你为什么不简单地重复使用 HtmlDocument
?
public string GetNameInfo(HtmlDocument doc)
{
string tag = doc.DocumentNode.SelectSingleNode("//*[@id='header_action']/div[1]/div[2]/h2").InnerText.Replace("\n", String.Empty);
return tag;
}
public string GetCodeInfo(HtmlDocument doc)
{
string tag = doc.DocumentNode.SelectSingleNode("//*[@id='header_action']/div[1]/div[2]/h1").InnerText.Replace("\n", String.Empty);
return tag;
}
您只需加载一次,然后将其传递给方法。
另一种方法是:将 HtmlDocument
存储在 属性 或 class 的字段中,用 LoadPage
初始化它并在 GetNameInfo
中访问它和 GetCodeInfo
,删除这些方法中的参数。
我有一个代码片段可以加载 html 文档和 return 以供进一步操作。
private HtmlDocument LoadPage(string path)
{
var web = new HtmlWeb();
var doc = web.Load(url + path);
return doc;
}
我创建了更小的方法来通过以下方式提取我想要的信息:
public string getNameInfo(String path)
{
HtmlDocument doc = LoadPage(path);
string tag = doc.DocumentNode.SelectSingleNode("//*[@id='header_action']/div[1]/div[2]/h2").InnerText.Replace("\n", String.Empty);
return tag;
}
我有另一种方法return我想通知另一个标签
public string getCodeInfo(String path)
{
HtmlDocument doc = LoadPage(path);
string tag = doc.DocumentNode.SelectSingleNode("//*[@id='header_action']/div[1]/div[2]/h1").InnerText.Replace("\n", String.Empty);
return tag;
}
今天我可以提取我想要的信息,但我想重复使用已经查阅过的HtmlDocument,并从页面中享受一次下载。
我尝试了一些解决方案,但我做不到,有没有什么方法可以采用单个 HtmlDocument 并将其分解为更小的函数来填充我的变量,而无需对加载方法进行多次查询。建议是对 LoadPage 方法执行单个查询并将其用于所有次要功能。
感谢收听
我不确定我是否理解正确。你为什么不简单地重复使用 HtmlDocument
?
public string GetNameInfo(HtmlDocument doc)
{
string tag = doc.DocumentNode.SelectSingleNode("//*[@id='header_action']/div[1]/div[2]/h2").InnerText.Replace("\n", String.Empty);
return tag;
}
public string GetCodeInfo(HtmlDocument doc)
{
string tag = doc.DocumentNode.SelectSingleNode("//*[@id='header_action']/div[1]/div[2]/h1").InnerText.Replace("\n", String.Empty);
return tag;
}
您只需加载一次,然后将其传递给方法。
另一种方法是:将 HtmlDocument
存储在 属性 或 class 的字段中,用 LoadPage
初始化它并在 GetNameInfo
中访问它和 GetCodeInfo
,删除这些方法中的参数。