Html Agility Pack. 加载和抓取网页

33

这是在进行网页爬取时最好的方式吗?

HttpWebRequest oReq = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse resp = (HttpWebResponse)oReq.GetResponse();

var doc = new HtmlAgilityPack.HtmlDocument();

doc.Load(resp.GetResponseStream());
var element = doc.GetElementbyId("//start-left");
var element2 = doc.DocumentNode.SelectSingleNode("//body");
string html = doc.DocumentNode.OuterHtml;

我看到使用HtmlWeb().Load获取网页。这是比先加载再解析网页更好的选择吗?


好的,我会尝试使用这种方法。

HtmlDocument doc = web.Load(url);

当我获取到doc时,我没有得到很多属性。 没有人喜欢使用SelectSingleNode。 我唯一能使用的是GetElementById,而且它可以正常工作,但我想获得一个类。

我需要这样做吗?

var htmlBody = doc.DocumentNode.SelectSingleNode("//body");
htmlBody.SelectSingleNode("//paging");

你也可以堆叠/追加节点选择。例如:var htmlBody = doc.DocumentNode.SelectSingleNode("//body").SelectSingleNode("//paging"); - Phill Healey
1个回答

74

使用HtmlWeb更容易。

string Url = "http://something";
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load(Url);

请您能否查看这个链接...关于HtmlWeb().Load(Url)有一些问题,它没有加载完整的网页内容..请帮助我。// https://dev59.com/73fZa4cB1Zd3GeqPOCZ1 - BhavikKama

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接