http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 16472|回复: 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);

看一下执行效果


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

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




1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
沙发
发表于 2014-9-12 13:42:46 | 只看该作者
受教了学习中……
板凳
发表于 2014-10-17 10:05:16 | 只看该作者
强烈支持楼主ing……
地板
发表于 2014-11-15 10:51:29 | 只看该作者
这个功能创意相当地好!
使用过程也发现一些疑问,如下图是http://www.amazon.com的内容


一、属性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' />这种格式。能否也做个区分?纯文本或图片可选。

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

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

本版积分规则

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

GMT+8, 2024-11-15 10:29

© 2014-2021

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