• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

爬虫技术 -- 进阶学习(九)使用HtmlAgilityPack获取页面链接(附c#代码及插件下载) ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

菜鸟HtmlAgilityPack初体验。。。弱弱的代码。。。

Html Agility Pack是一个开源项目,为网页提供了标准的DOM API和XPath导航。使用WebBrowser和HttpWebRequest下载的网页可以用Html Agility Pack来解析。

HtmlAgilityPack的文档是CHM格式的,有时会无法正常阅读CHM格式的文件。如果是IE不能链接到您请求的网页或者打开后“页面无法显示”。请在要打开的CHM文件上右击属性,会在底下属性多了个“解除锁定”,单击后就可以正常显示了。 

如果有需要下载,请点击HtmlAgilityPack.1.4.0下载,解压后找到HtmlAgilityPack.dll,把它添加到项目中。

HtmlAgilityPack.dll中的类都位于HtmlAgilityPack命名空间。

HtmlDocument表示一个完整的HTML文档。用Load方法加载网页。

下面进行HtmlAgilityPack初体验,

实现目标:,点击按钮后,根据给定的网址,打印出该页面的所有链接。简单代码如下:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.ComponentModel;
 4 using System.Data;
 5 using System.Drawing;
 6 using System.Linq;
 7 using System.Text;
 8 using System.Windows.Forms;
 9 using HtmlAgilityPack;
10 
11 namespace HtmlAgilityPackDemo1
12 {
13     public partial class Form1 : Form
14     {
15         public Form1()
16         {
17             InitializeComponent();
18         }
19 
20         private void Form1_Load(object sender, EventArgs e)
21         {
22 
23         }
24 
25         private void button1_Click(object sender, EventArgs e)
26         {
27             HtmlWeb webClient = new HtmlWeb();
28             HtmlAgilityPack.HtmlDocument doc = webClient.Load("http://www.cnblogs.com/lmei");
29 
30             HtmlNodeCollection hrefList = doc.DocumentNode.SelectNodes(".//a[@href]");
31 
32             if (hrefList != null)
33             {
34                 foreach (HtmlNode href in hrefList)
35                 {
36                     HtmlAttribute att = href.Attributes["href"];
37                    Console.WriteLine(att.Value);
38 
39                 }
40 
41             }
42 
43         }
44     }
45 }

当上面第28行代码写成如下,

HtmlDocument doc = webClient.Load("http://www.cnblogs.com/lmei");

会出现错误提示,

于是修改如下,

HtmlAgilityPack.HtmlDocument doc = webClient.Load("http://www.cnblogs.com/lmei");

 

接下来,看下控制台的输出,截图如下:

可见,网页上面的超链接都被打印出来了。。。

当然,如果想要抓取的是网页上面的正文,加载后可能出现乱码问题,则可以指定文件的编码:

HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();
Encoding encoder = Encoding.GetEncoding("utf-8"); htmlDoc.Load("http://www.cnblogs.com/lmei/p/3485649.html", encoder);


 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#如何读取QQ纯真IP数据库 - Dennis发布时间:2022-07-13
下一篇:
WebDriver兼容SeleniumRC(基于C#)发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap