苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

分布式系统框架(V1.3) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper万能框架(V2.3-含.netcore) HttpHelper官方出品,无敌框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 最牛的爬虫类,没有爬不到只有想不到 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 9001|回复: 7

[教程] 获取所有的A链接并生成List对象(href、text链接文本,html整个标签)

[复制链接]
发表于 2014-9-11 08:22:10 | 显示全部楼层 |阅读模式
导读部分

【HttpHelper万能框架】教程目录贴  http://www.sufeinet.com/thread-9989-1-1.html


教程部分


我们在得到一个网页时,里面肯定会有或多或少的A连接。那么我们怎么样获取这些A链接呢。
现在我在Httphelper万能框架中加入一个方法,可以提取到所有的A链接,并以对象的方法显示给大家

对结构如下
[C#] 纯文本查看 复制代码
using System;using System.Collections.Generic;
using System.Linq;
using System.Text;
using CsharpHttpHelper.Enum;

namespace CsharpHttpHelper.Item
{
    /// <summary>
    /// A连接对象  Copyright:[url=http://www.httphelper.com/]http://www.httphelper.com/[/url]
    /// </summary>
    public class AItem
    {
        /// <summary>
        /// 链接地址
        /// </summary>
        public string Href { get; set; }
        /// <summary>
        /// 链接文本
        /// </summary>
        public string Text { get; set; }
        /// <summary>
        /// 链接的图片,如果是文本链接则为空
        /// </summary>
        public ImgItem Img { get; set; }
        /// <summary>
        /// 整个连接Html
        /// </summary>
        public string Html { get; set; }
        /// <summary>
        /// A链接的类型
        /// </summary>
        public AType Type { get; set; } 
    }
}



下面看看怎么通过Httphelper万能框架来提取所有的A链接吧。
引入命名空间
[C#] 纯文本查看 复制代码
using CsharpHttpHelper;
using CsharpHttpHelper.Item;

开始提取
[C#] 纯文本查看 复制代码
            //创建Httphelper对象
            HttpHelper http = new HttpHelper();
            //创建Httphelper参数对象
            HttpItem item = new HttpItem()
            {
                URL = "http://www.sufeinet.com",//URL     必需项    
                Method = "get",//URL     可选项 默认为Get   
                ContentType = "text/html",//返回类型    可选项有默认值   
                //ContentType = "application/x-www-form-urlencoded",//返回类型    可选项有默认值   
            };
            //请求的返回值对象
            HttpResult result = http.GetHtml(item);
            //获取请请求的Html
            string html = result.Html;

            List<AItem> alist = HttpHelper.GetAList(html);

看一下执行效果
QQ截图20140911081917.jpg

总共提取了525个A链接。
而每一个都是有这个对象组成的。href  txt html
这样大家再用起来会很方便,
有了这个其实大家就可以做反链接。友情链接检查等功能了。

2014-11-24日更新了,Item类,增加了图片链接


发表于 2014-9-12 13:42:46 | 显示全部楼层
发表于 2014-10-17 10:05:16 | 显示全部楼层
发表于 2014-11-15 10:51:29 | 显示全部楼层
这个功能创意相当地好!
使用过程也发现一些疑问,如下图是http://www.amazon.com的内容

amazon首页

amazon首页


一、属性html提取的内容有时太多,很多其它标签的内容也全进来了。图中上半部分是正常的。下半部分的html基本上没法用了。
二、属性href提取的链接内容因为各个网站的不同,有时是完整链接,有时是二级路径,这时能否加个自动判断,形成完整路径?如图中的链接需要加上http://www.amazon.com才能形成可访问的完整链接。
三、属性text提取的一般是文本,但有时也发现提取的是图片的链接格式。如:<img src='//g-ec2.images-amazon.com/images/G/01/prime/piv/YourPrimePIV_fallback_CTA._V337321878_.jpg' />这种格式。能否也做个区分?纯文本或图片可选。

以上是使用这个功能的一点感受,不知老大能否考虑改进一下。
语言冒犯之处,敬请谅解哟。
 楼主| 发表于 2014-11-15 11:03:08 | 显示全部楼层
azon 发表于 2014-11-15 10:51
这个功能创意相当地好!
使用过程也发现一些疑问,如下图是http://www.amazon.com的内容

恩可以,这部分,我也在改革中,先谢谢你的好建议了
发表于 2015-5-18 00:06:11 | 显示全部楼层
给提个建议,增加两个参数,开始提取位置字符,结束位置字符,这样就可以提取某两个字符间的链接了。这个功能在获取帖子列表的时候很常见,可以过滤导航、友情链接等。
发表于 2015-5-22 19:54:07 | 显示全部楼层
感觉提取标签没必要~~~~~可以采用集成jumony~ 功能就会强大很多了。
发表于 2015-12-30 10:27:48 | 显示全部楼层
List<AItem> alist = HttpHelper.GetAList(html);在vs 2010 编译中,提示无法转化。。不知道我应该设置那里?初学
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备17001017号-1)

GMT+8, 2019-10-21 17:48

© 2017-2018

快速回复 返回顶部 返回列表