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

菜鸟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);

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

时间: 2024-10-17 05:45:04

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

WordPress获取页面文章内容的代码

下面是具体相关的页面内容调用代码: wordpess调用某页面内容的代码如下: <?php $article_id = 1; //页面的ID echo get_post($article_id)->post_content; ?> post_author:(整数)文章作者的编号 post_data:(字符)文章发表的日期和时间(YYYY-MM-DD HH-MM-SS) post_data_gmt:(字符)文章发表的格林尼治标准时间(GMT) (YYYY-MM-DD HH-MM-SS) p

总结整理 -- 爬虫技术(C#版)

爬虫技术学习总结 爬虫技术 -- 基础学习(一)HTML规范化(附特殊字符编码表) 爬虫技术 -- 基本学习(二)爬虫基本认知 爬虫技术 -- 基础学习(三)理解URL和URI的联系与区别 爬虫技术 -- 基础学习(四)HtmlParser基本认识 爬虫技术 -- 基础学习(五)解决页面编码识别(附c#代码) 爬虫技术 -- 基础学习(六)解析相对地址 爬虫技术 -- 进阶学习(七)简单爬虫抓取示例(附c#代码) 爬虫技术 -- 进阶学习(八)模拟简单浏览器(附c#代码) 爬虫技术 -- 进阶学

使用webcollector爬虫技术获取网易云音乐全部歌曲

最近在知乎上看到一个话题,说使用爬虫技术获取网易云音乐上的歌曲,甚至还包括付费的歌曲,哥瞬间心动了,这年头,好听的流行音乐或者经典老歌都开始收费了,只能听不能下载,着实很郁闷,现在机会来了,于是开始研究爬虫技术,翻阅各种资料,最终选择网友们一致认为比较好用的webcollector框架来实现. 首先,我们来认识一下webcollector,webcollector是一个无需配置,便于二次开发的爬虫框架,它提供精简的API,只需少量代码即可实现一个功能强大的爬虫,webcollector+hado

使用htmlparse爬虫技术爬取电影网页的全部下载链接

昨天,我们利用webcollector爬虫技术爬取了网易云音乐17万多首歌曲,而且还包括付费的在内,如果时间允许的话,可以获取更多的音乐下来,当然,也有小伙伴留言说这样会降低国人的知识产权保护意识,诚然,我们的重点在于如何灵活运用我们已学的技术,这就需要我们不断的练习,不停的思索和深入发掘,在了解了精髓和意义之后运用到实践中才是技术的最高境界. 今天呢,本着昨天的兴趣,想来爬一爬电影资源,中途为了找一个好用趁手的工具,也是费了不少心思,早上半天基本上都在学习和找资料的过程中度过,下午开始才进入状

js 获取页面内链接

今天有同学问如何用 JS 正则表达式获取一段文本中的超链接,并对超链接进行处理,想了几分钟,写了下面的代码: var re = /https?:\/\/[\w\.:~\-\d\/]+(?:\?[\w\d\-_&=%]+)?(?:#[^\s]+)?/i; 这个正则表达式处理这种类型的URL: protocol://host:port/path?param=value#xxoo 想法是好的,但总要测试通过才可以,随即又写了一段获取页面内所有带有 src, href 属性的代码: function g

网络爬虫技术

1.爬虫技术概述 网络爬虫(Web crawler),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,它们被广泛用于互联网搜索引擎或其他类似网站,可以自动采集所有其能够访问到的页面内容,以获取或更新这些网站的内容和检索方式.从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分.传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件.聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过

爬虫技术浅析

在WEB2.0时代,动态网页盛行起来.那么爬虫就应该能在页面内爬到这些有javascript生成的链接.当然动态解析页面只是爬虫的一个技术点.下面,我将按照如下顺序分享下面的这些内容的一些个人经验(编程语言为Python). 1,爬虫架构. 2,页面下载与解析. 3,URL去重方法. 4,URL相似性算法. 5,并发操作. 6,数据存储 7,动态爬虫源码分享. 8,参考文章 0x01 爬虫架构 谈到爬虫架构,不得不提的是Scrapy的爬虫架构.Scrapy,是Python开发的一个快速,高层次的

转]爬虫技术浅析

http://drops.wooyun.org/tips/3915 0x00 前言 网络爬虫(Web crawler),是一种“自动化浏览网络”的程序,或者说是一种网络机器人.它们被广泛用于互联网搜索引擎或其他类似网站,以获取或更新这些网站的内容和检索方式.它们可以自动采集所有其能够访问到的页面内容,以便程序做下一步的处理. 在WEB2.0时代,动态网页盛行起来.那么爬虫就应该能在页面内爬到这些有javascript生成的链接.当然动态解析页面只是爬虫的一个技术点.下面,我将按照如下顺序分享下面

一篇了解爬虫技术方方面面

原理 传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件.聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列. 然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止.另外,所有被爬虫抓取的网页将会被系统存贮,进行一定的分析.过滤,并建立索引,以便之后的查询和检索: 所以