爬虫技术(六)-- 使用HtmlAgilityPack获取页面链接(附c#代码及插件下载)

摘要:
使用WebBrowser和HttpWebRequest下载的网页可以使用HtmlAgilityPack进行解析。如果IE无法链接到您请求的页面或在打开该页面后无法链接到该页面。请右键单击要打开的CHM文件上的属性,然后使用load方法加载该页面,18}1920privatevoidForm1_load(objectsender;

菜鸟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获取页面链接(附c#代码及插件下载)第3张

于是修改如下,

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

接下来,看下控制台的输出,截图如下:
爬虫技术(六)-- 使用HtmlAgilityPack获取页面链接(附c#代码及插件下载)第4张

爬虫技术(六)-- 使用HtmlAgilityPack获取页面链接(附c#代码及插件下载)第5张

爬虫技术(六)-- 使用HtmlAgilityPack获取页面链接(附c#代码及插件下载)第6张

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

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

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

免责声明:文章转载自《爬虫技术(六)-- 使用HtmlAgilityPack获取页面链接(附c#代码及插件下载)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ubuntu查看系统资源占用(内存,cpu和进程)Tomcat性能调优及性能测试工具配置下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

1036. 跟奥巴马一起编程(15)

美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统。2014年底,为庆祝“计算机科学教育周”正式启动,奥巴马编写了很简单的计算机代码:在屏幕上画一个正方形。现在你也跟他一起画吧! 输入格式: 输入在一行中给出正方形边长N(3<=N<=20)和组成正方形边的某种字符C,间隔一个空格。 输出格式:...

Nginx开启Gzip压缩

1、Vim打开Nginx配置文件 vim /usr/local/nginx/conf/nginx.conf 2、找到如下一段,进行修改 gzip on; gzip_min_length 1k; gzip_buffers 4 16k; #gzip_http_version 1.0; gzip_comp_level 2; gzip_types tex...

tinyhttpd源码分析

  我们经常使用网页,作为开发人员我们也部署过httpd服务器,比如开源的apache,也开发过httpd后台服务,比如fastcgi程序,不过对于httpd服务器内部的运行机制,却不是非常了解,前几天看见tinyhttpd,只有短短500行左右的代码,就实现了一个简单的httpd服务器的基本功能,这种tiny程序,其实对于我们了解基本核心有一定的帮助,可...

html2canvas如何在元素隐藏的情况下生成截图

html2canvas官网地址:http://html2canvas.hertzen.com/ github地址:https://github.com/niklasvh/html2canvas/ 从官网可以看出它的使用方法很容易: 项目中的需求是需要将2张图片(1背景图+2生成的二维码)和1段文字(3店铺的名称)整体合成一张图片,看下面的图片应该有助于理...

Hadoop--mapreduce编程实例1

前提准备: 1.hadoop安装运行正常。Hadoop安装配置请参考:Ubuntu下 Hadoop 1.2.1 配置安装 2.集成开发环境正常。集成开发环境配置请参考 :Ubuntu 搭建Hadoop源码阅读环境 MapReduce编程实例: MapReduce编程实例(一),详细介绍在集成环境中运行第一个MapReduce程序 WordCount及代码分...

VS2015代码托管到Github

VS2015代码托管到Github 2018-07-02 10:53:50 【原创】本文地址:https://www.cnblogs.com/qiaoge0923/p/9253080.html 一直没有记录在GitHub上托管代码的方法,最近学习设计模式,想把相关的学习记录下来,把源码托管到GitHub以方便后面温习。 VS2015团队资源管理器里面就有到...