吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5841|回复: 8
收起左侧

[其他转载] C#TaoBaoHelper类;今天写的现在分享给大家

  [复制链接]
扫黄大队 发表于 2014-1-13 11:43
功能:

        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">店铺域名 例如:http://june23day.taobao.com/ 必须是这个格式,可以直接点击店铺中的“所有分类”获得</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

7.45 KB, 下载次数: 33, 下载积分: 吾爱币 -1 CB

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

头像被屏蔽
Hacker丶绝筱伦 发表于 2014-1-13 11:49
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 扫黄大队 发表于 2014-1-13 13:39
ferrice 发表于 2014-1-13 12:06
求整个VS的解决方案或者项目 = =

整个项目也是一个类,拿这两个类放进你自己的项目不就可以用了!
ferrice 发表于 2014-1-13 12:06
laughing______ 发表于 2014-1-13 11:58
很一般的代码。。。。。。。。没什么出彩的地方
uuwhat 发表于 2014-10-10 04:31
有用,谢谢了
crazybaby 发表于 2014-11-17 21:57
学习下。谢谢分享
fengxichou 发表于 2014-12-28 01:27
有了店主和商品的相关信息
LZ下一步是准备获取个人评价和购买详情吗?
xx_sj 发表于 2014-12-31 05:01
看看 支持一下
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

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

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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