C#使用HtmlAgilityPack快速爬蟲


HtmlAgilityPack真是一把網抓利器,可以迅速地從網頁抓到想要的文本或數據,使用起來十分方便,引用時在NuGet安裝添加並在頭部引用using HtmlAgilityPack;即可。

針對網址直接使用Load方法:

HtmlWeb webc = new HtmlWeb();
HtmlDocument htmlDoc = webc.Load(@"https://doc。。。");
HtmlNodeCollection hc = htmlDoc.DocumentNode.SelectNodes("//td[contains(normalize-space(text()),'Investment Advisor:')]/../../../../preceding-sibling::div[position()<=3]");

如果需要讀取的html文檔是本地的,可以先獲取數據流,再使用LoadHtml方法:

FileStream fs = new FileStream(@"C:\Users\jlin10\Desktop\test.html", FileMode.OpenOrCreate, FileAccess.Read);
StreamReader sr = new StreamReader(fs, Encoding.Default);
string htmlstr = sr.ReadToEnd();
sr.Close();
fs.Close();
HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();
htmlDoc.LoadHtml(htmlstr);

抓出來之后就可以對hc循環取innertext屬性得到結果,不過HtmlAgilityPack的selectnode(s)方法只支持xpath,不支持jsoup,所以要准確地抓出想要的東西就得看xpath寫得好不好了,這里推薦下使用xpath常用的兩個網址:

https://www.cnblogs.com/VseYoung/p/8686383.html

http://www.w3school.com.cn/xpath/xpath_functions.asp

上面代碼中使用的HTML文檔測試例子

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM