C#通过WebBrowser快速扒站思路积累大量着陆页列表

时间:15-09-04 栏目:C#开发 作者:kyle 评论:0 点击: 4,318 次

现在工作方向已经越来越倾向于项目产品运营相关的东西。对线上运营也有了一定程度的了解。

 

配合一些技术性的操作,能极大的便利工作中的各种高难度任务,快速提升自我,积累丰富的经验和资源。

 

以近期制作LP为例,在没有任何经验的情况下,需要快速和设计沟通制作着陆页,中间遇到了一些经验上不足,于是到处找各种别人家的着陆页研究别人的思路和做法,积累一些活动着陆页,对工作是有比较大益处的。参考别人的东西越多,才能做出更厉害的东西出来,凡事尽量往极致上靠近。

 

于是花了一整天的时间,基于浏览器,制作了一个扒站工具,把看到的一些好一点的着陆页全部down到本地,快速浏览和研究学习。

 

市面上已经有很多扒站的工具,包括最原始的teleport,后来的都客扒站工具、模板小偷、网页小偷、网页提取助手什么的。基本上都使用过,基本上都不能完整的把CSS、脚本、图片有效下载回来,按我要的格式存放。

以我在新浪上发现的一个懒财网的着陆页为例:

1

我想要的是这样的结果。

着陆页名称为index.html,CSS,图片和JS分别给我归类存到指定的目录,再到根目录下面标记一个txt文档,告诉我当时这个着陆页我是哪个网址下载回来的。

 

最后做出来的程度的界面是这样的

2

 

做的非常粗糙,只有一个分析并抓取和一个C#的WebBrowser可以用。

 

程序会自动下载相关的数据,并存到相关的目录,生成需要的文件。

 

为什么不用普通的直接获取源代码的方式直接下载HTML呢。

1、是HTML里面解析相对路径和绝对路径非常 非常 非常麻烦,需要正则表达式一个个匹配,并替换成本地路径。

2、是一些情况下,浏览器匹配出来的结果或许会更精确一点,实现上应该是更简单的。

 

代码流程:

1、浏览器载入着陆页,等待载入完成。

2、遍历所有节点

图片,就下载,保存,并替换为本地路径,脚本同样,CSS同样。最后处理着陆页内嵌入的style格式的源码。

最后,打开CSS文件,用正则匹配图片连接并下载远程图片,替换CSS里面的图片地址。

 

贴上解析CSS里面的图片并下载到本地的代码。其余都是比较简单的。

        /// <summary>
        /// 解析CSS源码里面的图片,下载,并转换为本地格式的链接
        /// </summary>
        /// <param name="content">CSS文件内容</param>
        /// <param name="cssUrl">CSS文件路径,用于转换为图片绝对地址下载</param>
        /// <returns></returns>
        public string ParseImgInCSS(string content, string cssUrl = "")
        {
            Regex reg = new Regex(@"url\((.*?)\)", RegexOptions.IgnoreCase);

            content = reg.Replace(content, (match) =>
            {
                string imgUrl = match.Groups[1].Value;
                imgUrl = imgUrl.Replace("'", "").Replace("\"", "");//替换'和双引号,因为URL匹配是可能带引号的
                imgUrl = HtmlHelper.GetUrlRelative(cssUrl, imgUrl);//修复路径为绝对地址
                if (!string.IsNullOrEmpty(imgUrl))
                {
                    //远程图片下载保存到本地
                    var localImage = Path.Combine("images", HtmlHelper.GetFileNameInUrl(imgUrl));
                    DownloadHelper.DownloadFile(imgUrl, Path.Combine(SaveFolder, SiteFolder, localImage));//下载到本地
                    if (cssUrl.ToLower().IndexOf(".css") > -1)
                    {//代表是CSS文件,会存到CSS目录,需要使用相对地址
                        return @"url('../" + localImage.Replace("\\", "/") + @"')";
                    }
                    else
                    {//代表是页面内部的CSS,不需要切换为相对路径
                        return @"url('" + localImage.Replace("\\", "/") + @"')"; ;
                    }
                }
                return match.Value;
            });
            return content;
        }

 

最后加上注释用了100行代码完成了整个扒站工具。

 

还有很多地方可以完善,不过已经可以投入使用。1分钟扒个几个站的着陆页是没问题了,准备抽空去各家p2p网站的百度推广扒他们的页了。。。

扒了10个LP,目录还没发现问题。要是有机会再包装一下出售。

 

会搞的人,可以自己玩玩,思路已经有了。

成都SEO小五嚎2句: 本文是(成都SEO小五)辛苦弄出来的,转载成都SEO小五原创的请保留链接: C#通过WebBrowser快速扒站思路积累大量着陆页列表,3Q

C#通过WebBrowser快速扒站思路积累大量着陆页列表:等您坐沙发呢!

来给哥评论评论


------====== 小五公告 ======------
成都SEO小五,专注成都搜索引擎优化。
小五善长站内外优化,C#、PHP开发,中英文SEO,Google中英文和百度优化技术。欢迎群内交流。伸手党请绕路,求资源的请绕开,求问题解答的请进群内交流。开放了一个QQ交流群:160750032。加入验证时请标注任何SEO相交字眼。友情链接直接Q我,收录正常,内容大部份原创、SEO或者程序开发、网络营销、线上推广等相关行业即可。

常用工具

赞助广告

来看过哥的人