555 asp.net mvc 抓取京东商城分类
 
URL:http://www.jd.com/allSort.aspx
 
效果:
 
//后台代码
public ActionResult GetCategoryFromJd()
        {
            var url = "http://www.jd.com/allSort.aspx";
            var htmlCode = HttpGet(url, "", new System.Net.CookieContainer());
            var firstCats = new List<string>();
            var codeCut = "";
            var endStr = "</h2>";
            var start = -1;
            var end = -1;
            var current = htmlCode.IndexOf("全部商品分类<b></b>");//去除第一个无用的h2标签内容
            start = htmlCode.IndexOf("<h2>", current);
            end = htmlCode.IndexOf("<h2>", start+1);
            while (start >= 0)
            {
                if (end > start)
                {
                    codeCut = htmlCode.Substring(start, end - start);
                    //一级分类
                    var firstCatName = GetChinese(codeCut, "<h2>(.*)</h2>", "[^\u4e00-\u9fa5、]");
 
                    //二级、三级分类
                    var matches = Regex.Matches(codeCut.Replace("\r\n", ""), "<dl(.*?)</dl>");
                    foreach (Match mc in matches)
                    {
                        //二级分类
                        var secondCatName = GetChinese(mc.Groups[1].Value, "<dt>(.*?)</dt>","[^\u4e00-\u9fa5、]");
 
                        //三级分类
                        var mts = Regex.Matches(mc.Groups[1].Value, "<em>(.*?)</em>");
                        foreach (Match m in mts)
                        {
                            var thirdCatName = GetChinese(m.Groups[1].Value, "<a.*>(.*)</a>");
                        }
                    }
                }
                current = end;
                start = htmlCode.IndexOf("<h2>", current);
                end = htmlCode.IndexOf("<h2>", start+1);
                if (end < 0)
                {
                    end = htmlCode.IndexOf("id=\"service-2013\"", start);
                }
                current = end+endStr.Length;
            }
            return View();
        }
 
//辅助方法
 
public static string GetChinese(string content,string pattern,string reg="[^\u4e00-\u9fa5、0-9-./A-Za-z&·]")
        {
            var match = Regex.Match(content, pattern);
            if (match.Success)
            {
                var result = Regex.Replace(match.Groups[1].Value, @reg, "");//取汉字或标点“、”、数字和“-”
                return result;
            }
            return null;
        }
 
public static string HttpGet(string Url, string postDataStr, CookieContainer cookie)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url + (postDataStr == "" ? "" : "?") + postDataStr);
            request.Method = "GET";
            request.ContentType = "text/html;charset=gbk";
            request.CookieContainer = cookie;
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream myResponseStream = response.GetResponseStream();
            StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("gbk"));
            string retString = myStreamReader.ReadToEnd();
            myStreamReader.Close();
            myResponseStream.Close();

return retString;
        }

asp.net mvc 抓取京东商城分类的更多相关文章

  1. 使用selenium+BeautifulSoup 抓取京东商城手机信息

    1.准备工作: chromedriver  传送门:国内:http://npm.taobao.org/mirrors/chromedriver/   vpn: selenium BeautifulSo ...

  2. asp.net MVC 抓取微信文章数据(正文)

    1.抓微信的正文主要是调用第三方的接口(https://market.aliyun.com/products/56928004/cmapi012134.html) using Newtonsoft.J ...

  3. asp.net mvc抓取微信文章里面所有的图片

    /// <summary> /// 下载指定URL下的所有图片 /// </summary> public class WebPageImage { /// <summa ...

  4. php+phpquery简易爬虫抓取京东商品分类

    这是一个简单的php加phpquery实现抓取京东商品分类页内容的简易爬虫.phpquery可以非常简单地帮助你抽取想要的html内容,phpquery和jquery非常类似,可以说是几乎一样:如果你 ...

  5. Asp.Net 之 抓取网页内容

    一.获取网页内容——html ASP.NET 中抓取网页内容是非常方便的,而其中更是解决了 ASP 中困扰我们的编码问题. 需要三个类:WebRequest.WebResponse.StreamRea ...

  6. 【爬虫】利用Scrapy抓取京东商品、豆瓣电影、技术问题

    1.scrapy基本了解 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架.可以应用在包括数据挖掘, 信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取(更确切来说,网络抓 ...

  7. Scrapy实战篇(八)之Scrapy对接selenium爬取京东商城商品数据

    本篇目标:我们以爬取京东商城商品数据为例,展示Scrapy框架对接selenium爬取京东商城商品数据. 背景: 京东商城页面为js动态加载页面,直接使用request请求,无法得到我们想要的商品数据 ...

  8. Python脚本抓取京东手机的配置信息

    以下代码是使用python抓取京东小米8手机的配置信息 首先找到小米8商品的链接:https://item.jd.com/7437788.html 然后找到其配置信息的标签,我们找到其配置信息的标签为 ...

  9. ASP.NET网页抓取数据

    我的数据通过一个TextBox输入,这些代码是写在一个button的点击事件里的. 网页数据抓取大概分为两步,第一步是获取网页源代码: 具体注释如下: var currentUrl = TextBox ...

随机推荐

  1. mybatis-5 手写代理

    @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface Select { public St ...

  2. 深入理解Spring IoC容器和动态代理机制

    Deployment期间验证 实现一: <bean id="theTargetBean" class="..."/> <bean id=&qu ...

  3. vue 项目规范

    1, 组件化 2, css 分清单独和通用的 3, 封装请求 4, 命名原则 1: 尽量和后端保持一致 2: 简单常见的单词 3: 全部小写

  4. Python_编程题集_002_菱形

    2.编写程序实现: n=5,输出: * *** ***** *** * n=6,输出: * *** ***** ***** *** * n为任意大于1的正整数. 解: #思路: # 第一步:判断行数, ...

  5. CentOS 7下安装Composer + Laravel

    1.wget https://dl.laravel-china.org/composer.phar -O /usr/local/bin/composer chmod a+x /usr/local/bi ...

  6. [BZOJ 3823]定情信物

    题面 定情信物 题解 这题主要考高中物理和数学. 首先定义 \(f[i][j]\) 表示 \(i\) 维超立方体中第 \(j\) 维元素的数量,根据实际意义,我们可以推出递推式: \(f[i][j]= ...

  7. 03003_Http响应

    1.Http协议 (1)状态码: (2)常用的状态码如下: 200 :请求成功: 302 :请求重定向: 304 :请求资源没有改变,访问本地缓存: 404 :请求资源不存在.通常是用户路径编写错误, ...

  8. Spring Boot配置方式

    Spring提供了xml.注解.Java配置.groovy配置实现Bean的创建和注入. 配置元数据 无论xml配置.注解配置还是Java配置,都被称为配置元数据,所谓元数据即描述数据的数据.元数据本 ...

  9. JS基本数据类型&流程控制

    JS基本数据类型 number     -----  数值 boolean    -----  布尔值 string     -----  字符串 [x,y] -------数组 undefined  ...

  10. oc温习五:字符串

    /** substringFromIndex: --从第from位数 开始截取字符串 */ NSString *str = @"asdfghjkzxcbnm"; NSString ...