利用 HtmlAgilityPack 抓取页面

HtmlAgilityPack获取HTML节点内容 使用HtmlAgilityPack进行开发的一个小实例.供需要的人进行参考. 立即下载

之前都是用正则抓取页面,本人正则不咋地,有些东西用抓取来很费劲,呵呵

在网上看到别人推荐一个 HtmlAgilityPack 的东西,网上找了资料,自己写了个抓取网页的例子,框架用的ASP.NET MVC 4,先看看效果

站点演示:http://www.5imvc.com/Html

首先下载插件,NuGet里就有

创建 model

   /// <summary>
    /// 页面抓取结果
    /// </summary>
    public class Result
    {
        /// <summary>
        /// 链接
        /// </summary>
        public string url { get; set; }
        /// <summary>
        /// 标题
        /// </summary>
        public string title { get; set; }
        /// <summary>
        /// 头像地址
        /// </summary>
        public string img { get; set; }
        /// <summary>
        /// 正文内容
        /// </summary>
        public string content { get; set; }
    }

Controllers:

导入命名空间:

using HtmlAgilityPack;
        public ActionResult Index()
        {
            return View(getList());
        }

     /// <summary>
        /// 抓取方法
        /// </summary>
        /// <returns></returns>
        public List<Result> getList()
        {
            List<Result> list = new List<Result>();

            #region 老式的正则抓取

            //System.Net.WebRequest req = System.Net.WebRequest.Create("http://www.cnblogs.com/");
            //System.Net.WebResponse res = req.GetResponse();    // GetResponse blocks until the response arrives
            //System.IO.Stream ReceiveStream = res.GetResponseStream();    // Read the stream into a string
            //System.IO.StreamReader sr = new System.IO.StreamReader(ReceiveStream);
            //string resultstring = sr.ReadToEnd();

            //string regstr = "<h3><a class=\"titlelnk\" href=\"(.*?)\" target=\"_blank\">(.*?)</a></h3>";

            //MatchCollection matches = Regex.Matches(resultstring, regstr, RegexOptions.Multiline);
            //foreach (Match item in matches)
            //{
            //    list.Add(new Result { url = item.Groups[1].Value, title = item.Groups[2].Value });
            //}


            #endregion

            HtmlWeb htmlWeb = new HtmlWeb();
            HtmlDocument htmlDoc = htmlWeb.Load(@"http://www.cnblogs.com/");

            //选择博客园首页文章列表
            htmlDoc.DocumentNode.SelectNodes("//div[@id='post_list']/div[@class='post_item']").
                AsParallel().ToList().ForEach(ac =>
                {
                    //抓取图片,因为有空的,所以拿变量存起来
                    HtmlNode node = ac.SelectSingleNode(".//p[@class='post_item_summary']/a/img");

                    list.Add(new Result
                    {
                        url = ac.SelectSingleNode(".//a[@class='titlelnk']").Attributes["href"].Value,
                        title = ac.SelectSingleNode(".//a[@class='titlelnk']").InnerText,
                        //图片如果为空,显示默认图片
                        img = node == null ? VirtualPathUtility.ToAbsolute("~/Content/img/avatar.png") : node.Attributes["src"].Value,
                        content = ac.SelectSingleNode(".//p[@class='post_item_summary']").InnerText
                    });
                });

            return list;

        }

View:

@model IEnumerable<Result>
@{
    foreach (var item in Model)
    {
    <div class="newsitem">
        <div>
            <img src="@item.img" class="hoverimg" alt="News" />
            <h3><a href="@item.url" target="_blank">@item.title</a>
            </h3>
            <p>
                @item.content
            </p>
        </div>
        <div>
            <p>
                <a href="@item.url" title="">查看全文</a>
            </p>
        </div>
    </div>
    }
}

 

HtmlAgilityPack htmlagilitypack.1.9.1,C#版本和HtmlAgilityPack分析工具。 立即下载

相关推荐

GD32F450以太网(1):ETH 外设接口简介

GD32F450以太网ETH MAC外设接口简介

Zhichao_Zhang的博客 1万+

c# html agility pack,【已解决】C#用HtmlAgilityPack执行Html解析时,发现InnerText中包含javascript,要去除Javascript...

【问题】C#中,中HtmlAgilityPack,去解析:的html中的:World’s first tablet with dual-band, dual-antenna Wi-Fi for over 35% faster downloads and streaming (compared to the iPad mini)时,发现对应的源码是:World’s first tablet with...

weixin_31847579的博客 545

谈谈SAP顾问的几个发展趋势

大家新年好,今天想聊一下对SAP顾问发展趋势的一些个人见解。过去10多年得益于我国的经济发展,外资不断加大在中国的投资和中国企业的发展,SAP顾问行业得到了很大的发展和壮大。那么未来几年SAP顾问的职业发展到底怎么样呢?

syounger的专栏 2514

利用 HtmlAgilityPack 抓取网页

之前都是用正则抓取页面,本人正则不咋地,有些东西用抓取来很费劲,呵呵 在网上看到别人推荐一个HtmlAgilityPack 的东西,网上找了资料,自己写了个抓取网页的例子,框架用的ASP.NET MVC 4,先看看效果 演示地址:http://www.5imvc.com/Html/cnblogs 首先下载插件,NuGet里就有 创建 model    /// &l...

weixin_30955341的博客 157

【Creator】cocoscreator 2.4 apk还原为工程 (1)

Cocos Creator 2.4 还原图片 meta文件

jokesuser的博客 2260

Carsim和Matlab/Simulink联合仿真时Carsim匹配不到Matlab的解决方法

      本人使用Carsim和Matlab/Simulink联合仿真做过用机器学习方法解决ACC和简单换道的仿真,曾将8.02 2016 2018三个版本Carsim反复安装N次,有相同方向的同学或安装过程遇到问题的同学可以加本人qq505625869一起交流经验心得。 一.前言       Carsim是一款很好的联合仿真软件,使用Carsim,可以避免搭建很多非常复杂的动力学模型

Kaikai_Liao的博客 8768

C#网页数据采集(一)HtmlAgilityPack

HtmlAgilityPack是.NET下的一个HTML解析类库。支持用XPath来解析HTML。命名空间:HtmlAgilityPack HtmlWeb webClient = new HtmlWeb(); HtmlAgilityPack.HtmlDocument html = webClient.Load("http://news.baidu.com/");//是你需要解

侞婼冇罪 1804

深入IR2104数据手册:被忽略的SD引脚用法和死区时间调节实战

本文深入解析IR2104半桥驱动芯片的SD引脚用法和死区时间调节技巧,帮助硬件工程师优化电机控制和电源转换系统。通过详细的电路设计、实测数据和调试方法,揭示SD引脚的多重保护机制和死区时间的精密调节策略,提升系统安全性和效率。

weixin_30342363的博客 391

犀利的Html解析器HtmlAgilityPack

HtmlAgilityPack是个开元的html解析器,可以将page source中的javascript&css去掉,当然有时可能会解析不完全。那么如何解决HtmlAgilityPack得到的InnerText中有残留的script、样式的问题,《C#: HtmlAgilityPack extract inner text》。 实现代码: foreach(var...

aomulfnmk317581091的博客 177

C语言试题一之计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和

1、题目 计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和 2、源代码实现 #include <stdio.h> #include <math.h> double fun1(int n) { if (n <= 0) return 0; int i; double sum = 0.0; for (i = 1; i <= n;...

码莎拉蒂 1万+

Unity-Mirror网络框架-从入门到精通之Mirror简介

在现代游戏开发中,网络功能日益成为提升游戏体验的关键组成部分。Mirror是一个用于Unity的开源网络框架,专为多人游戏开发设计。它使得开发者能够轻松实现网络连接、数据同步和游戏状态管理。本文将深入介绍Mirror的基本概念、如何与其他网络框架进行比较,以及如何从零开始创建一个使用Mirror的简单网络项目。Mirror是一个功能强大的Lite网络框架,旨在替代Unity的UNet网络解决方案。它提供了高效的多玩家架构、简单易用的API,以及良好的社区支持。

TxNet 3090

关于HtmlAgilityPack 的应用方式(网页爬虫)

获取 当前 tableid为 prpCmainHeadInput方式为 HtmlAgilityPack.HtmlDocument wc = new HtmlAgilityPack.HtmlDocument(); wc.LoadHtml(InfoStr); HtmlNodeCollection TableList = wc.DocumentNode.SelectNodes("//table[@id=‘prpCmainHeadInput’]"); 获取以下tr 的数据 HtmlDocument OneTabl

weixin_40029679的博客 563

恒玄BES调试笔记-BES2500如何打开COMPEXP

打开Compressor and expander会占用资源,这个根据个人项目需求而定吧!打开方法,以及参数修改如下: config\best2300a_ibrt_anc\target.mk SPEECH_RX_COMPEXP ?= 1 apps\audioplayers\bt_sco_chain_cfg_default.c #if defined(SPEECH_RX_COMPEXP) /*****************************************************

leezs的博客 706

利用HtmlAgilityPack抓取XX网站图片并下载~~~~~~邪恶版

由于提前到了学校,昨晚逛博客园的时候,意外发现了HtmlAgilityPack这个好东东,是微软的一个类库,用来分析Html页面的结构啊,等等。。。。。不得不说,HtmlAgilityPack很强大,我用的很爽啊。。。。抓取博客园的数据啊等等。。。(我搜了一些,发现仅仅是抓取文字的文章,于是一个邪恶的念头出现咋我脑海中,我就好奇的试了试。一番折腾后,结果是可行的啦,发给我以朋友试了试,结果可以,。...

yzd 1474

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【工作笔记0006】C#调用HtmlAgilityPack类库实现网页数据抓取

当然也有跟HtmlAgilityPack类似的处理html的组件类库,如AngleSharp、CsQuery等,关于这三者的讨论你在Google上随便一搜就有,至于哪个好哪个更实用,这就要看实际需求了,个人建议选择 HtmlAgilityPack,因为它轻量级、速度快,

adamlevine7的博客 1916

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

使用HtmlAgilityPack解析html

需要先项目中引用HtmlAgilityPack.dll 解析html时,最常见的场景是在列表页抓取到列表内容,然后做循环根据列表中标题的超链接抓取详情内容。 要抓取的目标网页核心html内容:             新闻标题12017-1-11         新闻标题22017-1-10     C#代码: string content =

wnety的专栏 741

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

C# HtmlAgilityPack爬取静态页面

最近对爬虫很感兴趣,稍微研究了一下,利用HtmlAgilityPack制作了一个十分简单的爬虫,这个简易爬虫只能获取静态页面的Html HtmlAgilityPack简介 HtmlAgilityPack是一个解析速度十分快,并且开源的Html解析工具,并且HtmlAgilityPack支持使用Xpath解析Html,能够帮助我们解析Html文档就像解析Xml文档一样轻松、方便。 Ht...

weixin_30871293的博客 486

用.Net Core写C#爬虫(HtmlAgilityPack)

最近我尝试用.netcore结合HtmlAgilityPack库来写C#爬虫,从网上抓取资料,效果十分理想,所以在此总结一下,原理十分简单,就是用httpClient抓取网页脚本,再通过xpath语法用HtmlAgilityPack库来解析,解析出数据之后,用Dapper框架来存储数据,简单方便使用,非常适合个人从网上获取收集资料。

Dahlin哥's 博客 1218

利用HtmlAgilityPack抓取园子里面的数据

public void GetStr() { string url = "http://kb.cnblogs.com/list/1001/"; HtmlWeb web = new HtmlWeb(); //htmlWeb.DefaultEncoding = System.Text.Encoding.GetEnco...

weixin_30236595的博客 110

HtmlAgilityPack使用

HtmlAgilityPack是一套用于抓取网页页面信息的组件。 一、引用 要使用这套组件,请先在vs中NuGet程序管理器为项目安装HtmlAgilityPack。 二、加载文档 为你的类添加HtmlAgilityPack引用是肯定的啦。 首先需要有要抓取的页面地址。string pUrl =“www.baidu.com”.有些页面嵌套了iframe页,那么在使用iframe包含页前需...

weixin_30588827的博客 290

使用C#和HtmlAgilityPack解析HTML

  近期,有一个需求,需要解析HTML页面,读取一些需要的数据后,插入本地数据库。我知道可以通过正则表达式实现,然而正则表达式之于我,就像汇编语言之于我,一样。我知道它是干什么的,我也知道它能干什么,但是我一直不知道怎么干,曾经尝试过,后来用得太少,最终放弃了。也知道有一些组件可以实现操作HMTL,比如mshtml,比如WebBrowser,然而总是感觉不太好,不太专业。犹犹疑疑,一直没有开始,直...

weixin_30952535的博客 116

CefSharp基本使用以及页面内容的获取(源码下载)

CefSharp可用的一个Demo。示例很简单就是通过CefSharp【打开】网址,通过HtmlAgilityPack遍历【获取数据】显示头部标题。 CefSharp不使用nuget,这种方式我就没成功过;是通过CefSharpV5直接放在程序运行目录使用的。 使用了vs2019 c# 64位 源码下载》》 ...

neo_Wordsworth的博客 2363

htmlagilitypack的简单使用

1.新建一个web页。 2.添加引用,引入htmlagilitypack。 3.代码 protected void Page_Load(object sender, EventArgs e) { HtmlWeb htmlWeb = new HtmlWeb(); //实例化HtmlAgilityPack.HtmlDocu...

weixin_30443075的博客 159

C#之HTML解析利器HtmlAgilityPack类库

1.下载HtmlAgilityPack.dll并将其添加引用到项目中,然后在代码中声明引用。 下载地址:http://www.codeplex.com/htmlagilitypack 引用: using HtmlAgilityPack;   2.下载获取HTML页面的步骤和我上篇文章里介绍的差不多,都是先用WebClient或者WebReques

cz19800823的专栏 3030

开源项目 01 HtmlAgilityPack

using HtmlAgilityPack; using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; using System.Xml; na...

weixin_30915275的博客 70
上一篇: 自定义 app_offline.htm,网站发布提示
下一篇: 用MVC做可拖拽的留言板,利用 Jquery模板 -- JsRender
linfei721
博客等级 码龄19年 9粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值