0
雖然仍處於延展狀態,此代碼的工作:使用HtmlAgilityPack進行屏幕刮取時,可以同時搜索多種標籤類型嗎?
public List<string> GetParagraphsListFromHtml(string sourceHtml)
{
var pars = new List<string>();
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(sourceHtml);
var getHtmlWeb = new HtmlWeb();
var document = getHtmlWeb.Load("http://www.montereycountyweekly.com/opinion/letters/article_e333a222-942d-11e3-ba9c-001a4bcf6878.html");
var pTags = document.DocumentNode.SelectNodes("//p");
int counter = 1;
if (pTags != null)
{
foreach (var pTag in pTags)
{
pars.Add(pTag.InnerText);
MessageBox.Show(pTag.InnerText);
counter++;
}
}
MessageBox.Show("done!");
return pars;
}
我真正想要的,不過,就是抓住所有文本元素(按順序),而不是段落標記(「的SelectNodes(」 // p 「))
是否有可能同時得到多個標籤類型,一拉像(僞):
var textTags = document.DocumentNode.SelectNodes("//h1", "//h2", "//h3", "//p",);
...或LINQified版本,如:
foreach (var par in doc.DocumentNode
.DescendantNodes()
.Single(x => x.Id == "body")
.DescendantNodes()
.Where(x => x.Name == "h1" || x.Name == "h2" || x.Name == "h3" || x.Name == "hp" ||))
?
不幸的是,在上面顯示的示例頁面中,消息框幾次顯示空字符串(無),就這些了。 –