随笔分类 -  Spider Studio

数据挖掘, Web采集, 蜘蛛程序, 搜索引擎, 大数据, 数据分析
摘要:多线程蜘蛛程序是一个很有用的组件, 我在自己开发的Spider Studio中也提供了一个. 在设计上我尽量遵循使用简单的原则, 大量使用dynamic对象的特性, 使得代码非常精简灵活, 通过17行就能实现一个功能比较齐全的蜘蛛程序. 现在和大家分享一下:public void Run(){ dynamic link = new ExpandoObject(); link.Url = "http://news.163.com"; Spider.AddLink(link); Spider.Downloaded += new DownloadedEventHandler(.. 阅读全文
posted @ 2014-03-03 12:51 Ivan Zou 阅读(2286) 评论(4) 推荐(2) 编辑
摘要:最近研究一个如何在网页定位验证码并截图的问题时, 用SS写了一段C#小脚本可以轻松获取页面任意元素的布局信息 (top, left, width, height). 10行功能代码, 觉得有点用, 现分享给大家:public dynamic GetRect(JQueryContext node){ node.Attr("pos_top", "0"); node.Attr("pos_left", "0"); Default.RunScript(string.Format("var pos = $(' 阅读全文
posted @ 2014-02-25 14:39 Ivan Zou 阅读(2175) 评论(0) 推荐(0) 编辑
摘要:这是年后的第一个新版本, 包含如下:1. 先前去掉的浏览器设置功能又回来了!说来惭愧, 去掉了这两个功能之后发现浏览经常会被JS错误打断, 很不方便, 于是乎又把它们给找回来了. :)2. 为JQueryContext添加页面布局相关的方法* Point Position(); //获取元素的top, left - 请注意, Point.X 对应 left, Point.Y 对应 top* Size Size(); //获取元素的width, height* Rectangle Rect(); //获取元素的top, left, width 和 height 阅读全文
posted @ 2014-02-25 12:32 Ivan Zou 阅读(623) 评论(0) 推荐(0) 编辑
摘要:要想在NodeJS中调用SS生成的DLL, 需要借助EdgeJS.EdgeJS:http://tjanczuk.github.io/edge/如果你还不知道如何在SS中生成DLL, 请查看:Spider Studio 新版本 (x-mas) - 可以引入第三方程序集, 可以将脚本生成为DLL下面以曾经写过的XML/JSON互转的脚本为例 (C#中另辟蹊径解决JSON / XML互转的问题)说明如何在NodeJS中应用SS DLL:1. 安装edgejsnpm install edge2. 为www.utilities_online.info.XmlJsonConverter.dll编写一个ja 阅读全文
posted @ 2014-02-25 12:18 Ivan Zou 阅读(1604) 评论(0) 推荐(0) 编辑
摘要:今天在园子里看到一篇文章:借助Nodejs在服务端使用jQuery采集17173游戏排行信息感觉用SS来实现相同功能更加简洁, 于是写了一下, 发现25行代码就搞定了 (包括自动翻页), 于是跟大家分享分享.脚本:public void Run() { Default.Navigate("http://top.17173.com/index-0-0-0-0-0-0-0.html"); Default.Ready(); while(Default.Available) { var list = Default.SelectNodes("ul.ph-bd-li... 阅读全文
posted @ 2014-02-10 20:32 Ivan Zou 阅读(1447) 评论(2) 推荐(0) 编辑
摘要:各位哥哥姐姐弟弟妹妹小伙伴们春节好! 2014年对于我们程序员很重要, 因为今年是 "码" 年! SS在此重要之年到来之际热力推出两大重要功能恭贺新春:1. 浏览器视图以前SS启动后的第一眼看起来像一个开发工具, 现在SS启动后第一眼看起来是一个浏览器. 我们将工作区默认折叠起来了! :)这虽然是个极其简单的改动, 却代表着SS的新方向: 由开发工具发展为服务平台的决心! 请大家拭目以待~~~2. 脚本库脚本库是文档库的姊妹功能, 同样是对博客园内容的集成, 但是更具创新性. 它将博客园中与SS相关的所有示范代码都抽取出来重新组合呈现, 为我们带来了一种全新的便捷体验. 因 阅读全文
posted @ 2014-02-06 21:29 Ivan Zou 阅读(798) 评论(0) 推荐(0) 编辑
摘要:做数据抓取和分析的各位亲们, 有没有遇到下面的难题呢?- 如何从各式各样的网页中提取正文!?虽然可以用SS为各种网站写脚本做解析, 但是互联网各类网站何止千万种, 纵使累死我们也是做不完的. 这里我给大家热情推荐使用Readability来彻底解决这个难题 (呵呵, 不是做广告, 真心热爱这个好东东)Raedability网站(www.readability.com)最引以为傲的就是其强大的解析引擎, 号称世界上最强大的文本解析神器. Safari中的"阅读器"功能就是用它来实现的! 他们还提供了API可以调用解析器的功能, 而我做了一个c#的代理类来方便大家使用.开始之前 阅读全文
posted @ 2014-01-22 23:06 Ivan Zou 阅读(3597) 评论(3) 推荐(1) 编辑
摘要:最近一个项目中需要用到过往的天气数据, 我找到了天气后报这个网站 (www.tianqihoubao.com), 并在SS中完成了相关采集, 和大家分享一下.首先分析这个网站提供了两种信息:1. 省市关系2. 天气记录对应的我们创建数据结构:[Serializable]public class Province{ public string ProvinceName; public string ProvinceUrl;}[Serializable]public class City{ public Province Province; public string Ci... 阅读全文
posted @ 2014-01-22 11:28 Ivan Zou 阅读(5229) 评论(4) 推荐(2) 编辑
摘要:其实问题很简单: 我的产品页面在http://www.gdtsearch.com/products.spiderstudio.docapi.htm, 这是一个静态页面; 而我所有的技术博客都在博客园中. 为了让访问者能够直接在产品页面中看到我最新的技术博客, 我将博客页面用IFrame嵌入到了产品页面中:这效果简直是,,, 矮矬穷, 如何叫人能够忍受? 于是乎一个改造工程开始了, 基本思路简单清晰:1. 用SS编写采集脚本, 并编译成DLL2. 用NodeJS编写一个WebApi, 其中调用上面的DLL来获取数据, 然后提供JSONP的结果集3. 在产品页面中用jquery.Ajax来异步加载 阅读全文
posted @ 2014-01-12 13:58 Ivan Zou 阅读(1783) 评论(7) 推荐(1) 编辑
摘要:SS对部分网页中引用的jquery.js有冲突, 会造成网页部分JS效果无法正常执行. 本次版本对其进行了修正, 优化了浏览器的脚本引用机制, 修正了这个BUG. 阅读全文
posted @ 2014-01-09 22:39 Ivan Zou 阅读(471) 评论(0) 推荐(0) 编辑
摘要:本次更新包含两项改进:1. 优化了设置菜单, 去掉了一些不必要的浏览器行为设置选项:取而代之的是在脚本中由用户自行设置:public void Run() { Default.CaptureNewWindow = true; //强制在本窗口打开所有页面 Default.ScriptErrorsSuppressed = true; //屏蔽JS错误 Default.AlertSuppressed = true; //禁止对话框 - Alert Default.ConfirmSuppressed = true; //禁止对话框 - Confirm Default.... 阅读全文
posted @ 2014-01-08 12:48 Ivan Zou 阅读(449) 评论(0) 推荐(0) 编辑
摘要:当初为了在SS中设置数据仓库这个功能, 团队中有一些争议. 主要是集中在为啥要提供这个功能, 到底有没有必要等问题上, 但最终这个功能还是上了. 相信初用者也会有同样的疑问, 我想介绍一下数据仓库的一些妙用, 也顺便为大家解析一下这个疑惑.用处1, 临时保存中间数据:以采集网易国际新闻为例. 打开http://news.163.com/world/, 可以看到这是一个列表页面, 每页有几十条新闻, 还有很多很多页. 每条新闻点开之后可以看到正文, 这个正文就是我们最终要采集的内容. 如果在一个脚本中完成刚才的流程, 会显得有点复杂, 纵使各位技术高超, 估计开始之前也要构思一番. 我推荐一个简 阅读全文
posted @ 2014-01-06 15:54 Ivan Zou 阅读(701) 评论(1) 推荐(0) 编辑
摘要:SS是Spider Studio (采集工作站) 的简称, 这是由GDT团队开发的一款互联网数据采集开发工具. 它以浏览器为基础, 运用JQuery技术, 结合脚本化C#的强大功能, 能够轻松解决各类数据采集问题.首先下载SS:http://www.gdtsearch.com/products.spiderstudio.htm安装完成后运行起来界面如下:1. 顶部菜单栏 包含浏览器地址栏, 工作区展开/折叠开关, 页面元素选择器开关, Html查看按钮, 设置和帮助菜单栏中大部分功能都很容易理解, 我重点说说 "设置" 菜单的子菜单:浏览器选项 - 打开IE的设置页, 能够 阅读全文
posted @ 2014-01-06 15:12 Ivan Zou 阅读(2352) 评论(0) 推荐(0) 编辑
摘要:最近遇到的一个需求是如何让程序自动登录淘宝, 获取用户名称等信息. 其实这个利用SS (SpiderStudio的简称) 实现起来非常简单. 十数行代码就可以做到非常完善:1. 运行SS (下载地址), 编写脚本打开淘宝登陆页面:Default.Navigate("https://login.taobao.com/member/login.jhtml");Default.Ready();2. 找到用户名, 密码的输入框, 输入信息, 点击登录按钮:var user = Default.SelectSingleNode("#TPL_username_1") 阅读全文
posted @ 2014-01-03 00:00 Ivan Zou 阅读(6799) 评论(12) 推荐(8) 编辑
摘要:数据仓库是集成在Spider Studio中的一个重要功能, 利用它可以非常方便的保存采集到的数据, 然后导出或者在其他脚本中再利用.数据仓库的全部功能都集成在DataManager这个静态类里面, 基本用法如下:1. DataManager.Newvoid New(string datasetName)调用此方法会创建一个名为datasetName的数据集, 注意这里datasetName是不区分大小写的. 创建的同时该数据集会自动显示在数据仓库管理器界面中, 如:public void Run(){ DataManager.New("test_data");}运行此代码 阅读全文
posted @ 2014-01-01 23:31 Ivan Zou 阅读(1184) 评论(0) 推荐(0) 编辑
摘要:>> 接前文 "示例 - 如何在Console应用程序中应用SpiderStudio生成的DLL?", 将其运用到ASP.NET中:1. 创建WebApplication项目, 引入www.utilities_online.info.XmlJsonConverter.dll2. 设置Target Framework为: .NET Framework 43. 在Default.aspx上拖放控件HTML: XMLJSON ... 阅读全文
posted @ 2013-12-26 16:50 Ivan Zou 阅读(601) 评论(0) 推荐(0) 编辑
摘要:>> 接上文 "示例 - 如何在Console应用程序中应用SpiderStudio生成的DLL?", 将其改成多线程:代码:using System;using System.Collections.Generic;using System.Linq;using System.Text;using www.utilities_online.info;using System.Threading;using System.Threading.Tasks;namespace ConsoleApplication4{ class Program { static v 阅读全文
posted @ 2013-12-26 14:28 Ivan Zou 阅读(533) 评论(0) 推荐(0) 编辑
摘要:以前面生成的XML/JSON互转DLL为例, 我们写一个Console Appliction来做这件事情, 步骤如下:1. 创建Console Project2. 引入www.utilities_online.info.XmlJsonConverter.dll3. 将Target Framework改为: .NET Framework 44. 将Main标识为[STAThread][STAThread] static void Main(string[] args) {...}- SS生成的DLL是依赖于浏览器控件的, 它是一个ActiveX控件. ActiveX控件只能够在单线程单元(STA 阅读全文
posted @ 2013-12-26 13:56 Ivan Zou 阅读(555) 评论(0) 推荐(0) 编辑
摘要:最近在一个POC的项目中要用到JSON和XML的相互转换, 虽然我知道很多类库如JSON.NET具备这种功能, 但是我还是另辟蹊径的使用Spider Studio结合一个在线工具网站快速实现了这个功能.在线工具网站:http://www.utilities-online.info/xmltojson必备工具: Spider Studio (采集工作站):http://www.gdtsearch.com/products.spiderstudio.htm1. 打开Spider Studio, 加载页面http://www.utilities-online.info/xmltojson/2. 通过 阅读全文
posted @ 2013-12-25 23:30 Ivan Zou 阅读(3162) 评论(7) 推荐(1) 编辑
摘要:Merry X'mas!Spider Studio本年度最后一次重大更新发生在圣诞节, 又是一次美好的巧合 :)本次更新主要包含两个重要功能:1. 引入第三方程序集在"设置"菜单下增加了一个"添加/删除程序集"的选项, 点击之后就能够添加DLL的引用, 编辑using区域, 并在脚本代码中直接使用DLL中的功能:2. 将脚本生成为DLLSpider Studio的定位是一款开发工具, 因此必须要表现得像一个开发工具 :)希望大家能够enjoy这两个功能, 特别是生成DLL, 如果能够开发些能够创收的程序我们就更开心了.最后上个图, 祝大家岁月静好 阅读全文
posted @ 2013-12-25 13:46 Ivan Zou 阅读(798) 评论(0) 推荐(0) 编辑