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

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

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

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

查看: 4703|回复: 2

[功能帮助类] C#TaoBaoHelper类;今天写的现在分享给大家

[复制链接]
发表于 2014-1-13 11:20:49 | 显示全部楼层 |阅读模式
C#TaoBaoHelper类


此类使用了苏飞的HttpHelper类如果没用这个类的朋友请去此贴下载http://www.sufeinet.com/thread-2002-1-1.html



功能:

        1.获取店铺所有的商品ID

        2.通过商品ID获取商品的HTML

就以上两个小功能,后面会添加更多的功能!希望大家多多支持哦!



辅助功能:

       1.过滤相同内容

       2.取文本中间内容

       3.取文本中间到List集合


代码如下:

[C#] 纯文本查看 复制代码
/// <summary>
/// 类说明:获取店铺所有商品ID,然后调用获取到ID可获得制定的商品数据
/// 编码日期:2014-01-13
/// 编 码 人:Lese
/// 联系方式:97354625  
/// </summary>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TaoBaoHelper
{
    public class TaoBaoHelper
    {
        /// <summary>
        /// 店铺商品页数
        /// </summary>
        private static int page = 1;

        public static int Page
        {
            get { return TaoBaoHelper.page; }
            set { TaoBaoHelper.page = value; }
        }
        /// <summary>
        /// 循环判断
        /// </summary>
        private static bool b = false;

        public static bool B
        {
            get { return TaoBaoHelper.b; }
            set { TaoBaoHelper.b = value; }
        }
        /// <summary>
        /// 储存每页的商品ID
        /// </summary>
        private static StringBuilder sb = new StringBuilder();

        public static StringBuilder Sb
        {
            get { return TaoBaoHelper.sb; }
            set { TaoBaoHelper.sb = value; }
        }
        /// <summary>
        /// 返回的商品ID
        /// </summary>
        private static string[] id;

        public static string[] ID
        {
            get { return TaoBaoHelper.id; }
            set { TaoBaoHelper.id = value; }
        }
        /// <summary>
        /// 取文本中间内容
        /// </summary>
        /// <param name="url">店铺域名 例如:[url]http://june23day.taobao.com/[/url] 必须是这个格式,可以直接点击店铺中的“所有分类”获得</param>
        /// <returns>店铺所有商品</returns>
        public static string[] ReadID(string url)
        {
            HttpHelper http = new HttpHelper();
            while (B != true)
            {
                HttpItem item = new HttpItem()
                {
                    URL = url + "search.htm?pageNo=" + Page.ToString(),//URL     必需项    
                    Method = "get",//URL     可选项 默认为Get   
                    IsToLower = false,//得到的HTML代码是否转成小写     可选项默认转小写   
                    Cookie = "",//字符串Cookie     可选项   
                    Referer = "",//来源URL     可选项   
                    Postdata = "",//Post数据     可选项GET时不需要写   
                    Timeout = 10000,//连接超时时间     可选项默认为100000    
                    ReadWriteTimeout = 10000,//写入Post数据超时时间     可选项默认为30000   
                    UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)",//用户的浏览器类型,版本,操作系统     可选项有默认值   
                    ContentType = "text/html",//返回类型    可选项有默认值   
                    Allowautoredirect = false,//是否根据301跳转     可选项   
                    ProxyIp = "",//代理服务器ID     可选项 不需要代理 时可以不设置这三个参数    

                };
                HttpResult result = http.GetHtml(item);
                string html = result.Html;
                if (html.IndexOf("J_SearchAsync next") == -1)
                {

                    foreach (String s in BetweenArr(html, "&itemIds=", "&source=shop\"/>"))
                    {
                        Sb.Append("," + s);

                    }
                    B = true;
                }
                else
                {
                    foreach (String s in BetweenArr(html, "&itemIds=", "&source=shop\"/>"))
                    {
                        Sb.Append("," + s);
                        Page++;
                    }
                }
            }
            string[]uid = Sb.ToString().Split(',');
            ID = RemoveLike(uid);
            return ID;
        }
        /// <summary>
        /// 获取商品数据
        /// </summary>
        /// <param name="ID">商品ID</param>
        /// <returns>返回商品数据HTML</returns>
        public static String ReadCommodity(string ID)
        {
            HttpHelper http = new HttpHelper();
            HttpItem item = new HttpItem()
            {
                URL = "http://item.taobao.com/item.htm?id=" + ID,//URL     必需项    
                Method = "get",//URL     可选项 默认为Get   
                IsToLower = false,//得到的HTML代码是否转成小写     可选项默认转小写   
                Cookie = "",//字符串Cookie     可选项   
                Referer = "",//来源URL     可选项   
                Postdata = "",//Post数据     可选项GET时不需要写   
                Timeout = 10000,//连接超时时间     可选项默认为100000    
                ReadWriteTimeout = 10000,//写入Post数据超时时间     可选项默认为30000   
                UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)",//用户的浏览器类型,版本,操作系统     可选项有默认值   
                ContentType = "tehp/html",//返回类型    可选项有默认值   
                Allowautoredirect = false,//是否根据301跳转     可选项   
            };
            HttpResult result = http.GetHtml(item);
            string html = result.Html;
            return html;
        }
        /// <summary>
        /// 过滤相同内容
        /// </summary>
        /// <param name="values">要过滤数组</param>
        /// <returns>过滤后的数组</returns>
        public static string[] RemoveLike(string[] values)
        {
            List<string> list = new List<string>();
            for (int i = 0; i < values.Length; i++)//遍历数组成员
            {
                if (values[i] != "")
                {
                    if (list.IndexOf(values[i].ToLower()) == -1)//对每个成员做一次新数组查询如果没有相等的则加到新数组
                        list.Add(values[i]);
                }

            }

            return list.ToArray();
        }
        /// <summary>
        /// 取文本中间内容
        /// </summary>
        /// <param name="str">原文本</param>
        /// <param name="leftstr">左边文本</param>
        /// <param name="rightstr">右边文本</param>
        /// <returns>返回中间文本内容</returns>
        public static string Between(string str, string leftstr, string rightstr)
        {
            int i = str.IndexOf(leftstr) + leftstr.Length;
            string temp = str.Substring(i, str.IndexOf(rightstr, i) - i);
            return temp;
        }
        /// <summary>
        /// 取文本中间到List集合
        /// </summary>
        /// <param name="str">文本字符串</param>
        /// <param name="leftstr">左边文本</param>
        /// <param name="rightstr">右边文本</param>
        /// <returns>List集合</returns>
        public static List<string> BetweenArr(string str, string leftstr, string rightstr)
        {
            List<string> list = new List<string>();
            int leftIndex = str.IndexOf(leftstr);//左文本起始位置
            int leftlength = leftstr.Length;//左文本长度
            int rightIndex = 0;
            string temp = "";
            while (leftIndex != -1)
            {
                rightIndex = str.IndexOf(rightstr, leftIndex + leftlength);
                if (rightIndex == -1)
                {
                    break;
                }
                temp = str.Substring(leftIndex + leftlength, rightIndex - leftIndex - leftlength);
                list.Add(temp);
                leftIndex = str.IndexOf(leftstr, rightIndex + 1);
            }
            return list;
        }
    }
}




TaoBaoHelper.rar

2.18 KB, 下载次数: 89, 下载积分: 金钱 -1



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2014-9-3 15:19:02 | 显示全部楼层
咋使用,能给力个历程吗?
发表于 2014-9-4 12:21:41 | 显示全部楼层
强烈支持楼主ing……
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2024-5-2 18:20

© 2014-2021

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