外部数据

数据转换

play

数据转化功能用于将其它格式的数据转换为CSV或TXT格式的数据。

当SqlCel连接的数据库为文件夹时,它仅支持CSV和TXT格式的文件。但是如果我们的文件不是这两种格式是不是就不能用SqlCel来分析了呢?答案当然是否定的。为了让SqlCel 能够处理和分析更多的数据,我们提供了数据转换的功能。

点击SqlCel选项卡下的“数据转换”按钮。弹出以下对话框:

datatrans

“数据源”后的文本框中填写将要被转换的文件的完整路径。“数据源类型”的下拉框中提供了六种选择分别是TXT、CSV、XLSX、XML、JSON和NOSURE。前五种数据源的类型比较好理解,但是 最后一种“NOSURE”您可能不太理解,“NOSURE”就是不确定的数据源类型即超出这五种类型之外的任何类型都可以归为“NOSURE”。“编码”为数据转换的过程中使用的编码,其下拉框 中提供了四种编码格式分别是Default、ASCII、GBK和UTF8,其中Default的默认编码为GB2312。“转换后”的文件的文件格式有两种选择分别是CSV和TXT。

这里面需要特别强调的是两种比较特殊的数据转换方式。第一种是数据源类型为CSV转换后选择的仍然是CSV;第二种是数据源类型为TXT转换后选择的仍然是TXT。看上去 从CSV到CSV和从TXT到TXT不需要做任何转换,其实SqlCel做了一件很有意义的事情,就是它会尝试将源文件转换为标准的CSV格式。SqlCel认为标准的CSV格式为列分隔符为逗号, 行分隔符为换行符即\r\n,数据转换完毕后会提示您“已将文件的内容转换为标准的CSV格式”。因为有些CSV文件并不是标准的CSV格式,读入的时候可能会串行从而导致计算错误。

查看CSV

查看CSV是SqlCel支持CSV文件的第一个功能,它通过数据库引擎用SQL语句读取CSV文件的内容并表现在Excel中。

点击SqlCel选项卡下的“查看CSV”按钮。弹出以下对话框:

viewcsv

选择一个待读入的CSV文件后可选择“查看前1000行”和“查看全部行”。编码提供了Default,UTF8,GBK和BIG5四种,其中Default默认为GB2312。如果不勾选“查看部分字段” 直接点击“查看文件”则会查看所有字段。如果点击“查看部分字段”则弹出如下对话框:

viewcsvpartial

选中其中的部分字段点击“查看文件”即可。

读入文本

play

读入文本功能可以将外部文件快速地读入Excel中。该功能的特点是读入速度快、数据不丢失且支持的文件类型多。

  1. 读入速度快

该方法以数据流的方式读取数据,将数据写入Excel的时候使用的是长度为65536的字符串数组分批写入。该方法比数据库引擎快很多。

  1. 数据不丢失

数据不丢失包含两个方面,第一是可保证读出来的数据原汁原味,因为如果使用引擎读入数据的话数据类型经常会被转换。第二是读入的字符不会丢失,因为如果使用引擎 读入数据当一个字段下的值太长的话数据可能会被截断。

  1. 支持的文件类型多

该功能可读取各种具有I/O接口的文件。

点击SqlCel选项卡下的“读入文本”按钮。弹出以下对话框:

readdata

选择待读入的文件,设定编码,点击“读入”即可。

网页爬虫

基本功能   play

搜索内容   play

搜索渠道   play

网页爬虫功能弥补了SqlCel数据处理功能在互联网数据上的最后一个空白。至此SqlCel可处理的数据源基本涵盖了我们工作中常接触的绝大部分数据,包括Mysql、SqlServer、 Oracle三个主流数据库和最常见的文件夹中的数据以及最后一个互联网数据。所以我们可以问心无愧地说SqlCel是一款处理和分析数据的软件。

SqlCel的网页爬虫功能结合了网页源码和Excel的特点让爬虫变得非常简单,它可以让一个最普通的人实现网络爬虫的愿望。

SqlCel爬虫利用的原理主要是:网页是由一个个标签组成的,标签的路径一般相对不变但标签的值变动较大,我们记录下每一个标签的路径和请求方式,让用户选取自己感兴趣的内容并存为模板, 当下次我们还需要模板中的值时可通过标签中的路径和请求方式去寻找对应的值。

点击SqlCel选项卡下的“网页爬虫”按钮。弹出以下工作面板:

webcraw

这个面板的控件非常多,初看有些眼花缭乱,它们可以分为7组,分别是“网页”、“提取标签”、“拼接URL”、“模板管理”、“复制单元格”、“定时推送邮件”和“资源搜索”。

  1. 网页 该模块主要用于设置对网页的访问方式。

    1. “Url”后的文本框用于填写要访问的网址
    2. “请求方式和请求参数”组合框可用于设置
      1. 发送GET或POST请求方式,默认为GET请求;
      2. 获取的文本是innerText还是OuterHtml,默认为innerText,innerText即标签内的文本,OuterHtml即完整的标签文本;
      3. 发送请求的时候携带的参数,携带的参数为键值对。最多支持携带两组请求参数。多数情况下该组合框的内容使用默认设置即可。
    3. “浏览”按钮用于读取并解析网页的源代码。它将网页源码解析成一个个独立的标签并从A2单元格向下黏贴。其黏贴的同时不仅黏贴标签的值同时还有对该标签 大量的注释文本。该注释中记录了如何获取该标签的详细信息,为了不影响用户使用,注释内容存放于单元格的批注中。
    4. “标记”按钮用于读取标签的注释信息并获取该标签在网页中的详细路径。该功能在用户选取标签的时候具有重要的参考价值。
    5. “页面”主要用于读取无法获取源码的网页。在互联网中有很多页面的内容是无法在源码中找到的,或者寻到的难度很大,这时候可考略用页面的方式抓取数据。 该功能调用内置的浏览器去加载页面,当页面加载完毕后则将该页面的所有内容复制到当前工作簿中。但是我们仍然要提醒用户尽量通过解析源代码爬虫,只有在源代码无法获取的条件下 才会考虑使用页面。因为页面中元素的位置相对没有标签来得更准确,同时页面的加载速度相对较慢。当使用页面的时候可尽量多选取几个标签定义在模板中以提高数据抓取的准确度。
    6. “编码”用于设置读取网页时所用的编码,下拉框中提供了UTF8和GBK两种方式,这两种基本可以满足所有网页,同时也支持自定义。
  2. 提取标签

该模块用于设定一定的条件并提取符合条件的标签。当需要提取的标签比较多的时候,逐个提取就比较费事,如果发现需要的标签存在一定的规律那么利用这个规律来提取标签就会容易很多。 比如以下网址中的电视剧排行榜http://top.iqiyi.com/dianshiju.html#vfrm=7-13-0-1,我们只对它的 电视剧名称感兴趣,希望获取它从第1名到第50名的电视剧名称,我们发现它的电视剧名称在名次向下偏移两个单元格的位置,于是可以设置提取标签的条件为“等于数字向下偏移2个单元格”。 点击“确认提取”会将符合条件的标签提取到C列。

其中比较符提供了等于、包含、开头是、结尾是,比较值提供了数字、字母同时支持自定义。

以上方法通过SqlCel自带的筛选功能来提取标签,但当寻找标签的工作量不大时,我们更多地是自己手动提取标签。点击A列的标签出现以下下拉菜单:

webcrawmenu

1. 记录标签:用于将当前选中标签记录下来放在C列,同时在当前选中单元格的右边一个单元格中用颜色标识该标签;
2. 删除标签:如果当前标签已被记录则从记录的标签中删除该标签;
3. 查看标记:用于查看当前选中标签的标记即当前标签在整个页面的具体路径;

选取标签的时候可参考标记,比如两个标签的内容完全一样我们尽量选取标记短的那一个,因为一般情况下标记越短的标签越稳定,但这种说法并不绝对。

点击C列已选取的标签,会弹出以下菜单:

webcrawmenu2

1. 追踪标记:用于追踪当前选中标签在A列的具体位置
2. 删除标记:用于删除当前选中的标签,同时在B列取消相应的颜色标注。
  1. 拼接URL

拼接Url的功能用于搜索资源库。该功能要求Url可以接受传入的字符串,传入的字符串即为要搜索的内容,比如http://so.iqiyi.com/so/q_在“q_”后面可以传入一个字符串用于搜索 爱奇艺的资源。

将取到的标签黏贴在C2单元格,并将C2单元格向下复制一定的个数,复制方法可使用工作面板中提供的“复制单元格”功能。

点击“准备”SqlCel会将C列的Url全部取出来放在“原Url”下方,“Url左边”和“Url右边”是相对搜索字符串而言的,“拼接地址”用于将Excel单元格的值传入Url,其表示形式为$A$1,需用 绝对引用,“拼接预览”用于查看最终用于搜索的Url,“拼接结果”为即将传入标签的注释里的Url,举一个完整的例子如下:

webcrawpj

将该例存入模板执行结果如下:

webcrawpjjg

改变B列的值则C列的值也会相应改变。

  1. 模板管理

模板是用户定义自己感兴趣的内容一个容器。它提供了“创建模板”、“保存模板”、“导入模板”和“保存数据”的功能。

1. “创建模板”用于创建一个新的模板表,新的模板表的名称为“WebCrawl_Model” 。
2. “保存模板”当用户将自己的模板定义好之后就可以把这个模板定义保存到本地,当下次需要的时候再导入。
3. “导入模板”用于将之前保存好的模板再次导入Excel中。
4. “保存数据”功能用于将模板中的数据另存为到一个工作簿中,因为模板中有大量的注释,这些注释有可能会影响到使用,所以提供该功能以便于去除注释仅保留值。

以下是两个月前做的一个模板其爬虫结果如下 : webcrawexamp

在该例中有两个获取失败的标签,因为该标签的位置发生了改变,此时应修改一下模板即可。

  1. 复制单元格

网页爬虫功能对批注的依赖比较高,使用填充柄无法填充批注,而复制黏贴功能的效率太低所以SqlCel提供了复制单元格的功能以快速复制带批注的单元格。

  1. 定时推送邮件

定时推送邮件功能用于定时抓取模板中的数据并发送邮件给设定的收件人。点击“邮件设置”弹出以下对话框:

webcrawemail

在该对话框中输入发件人及收件人信息,其中“发件人”为邮箱号码。“邮箱”SqlCel可智能填充,也可以自己修改,比如139邮箱为“smtp.139.com”。发件人建议使用139邮箱,有些邮箱可能会无效。 可同时写多个收件人,不同收件人之间用分号隔开。发送邮件的时候会将爬虫结果保存在附件中,附件名称和主题名称相同。定时时间间隔以毫秒为单位(1秒=1000毫秒),可设置循环爬虫并发送,也可设置 仅发送一次。

设置好发件人及收件人信息后,点击“定时推送”启动定时任务同时在下方会有提示文本“定时任务已开启”如下:

webcrawont

点击“停止推送”则停止定时任务。

  1. 资源搜索

“拼接Url”和“资源搜索”的功能都可以用来搜索资源库,不同的是“拼接Url”主要用于在同一个资源库搜索不同的内容,“资源搜索”主要用于在不同资源库搜索同一个内容。

“资源搜索”功能要求Url可传入参数并且参数应从整个url的最后传入,如以下Url:http://so.iqiyi.com/so/q_ ,参数可在“q_”后面传入。使用以上介绍的方法在不同的资源库搜索内容并定义在 一个模板中。之后点击“资源搜索”按钮会弹出资源搜索文本框。

在资源搜索文本框中填写需要搜索的内容,“Url尾词”为搜索用Url的最后的字符串,比如http://so.iqiyi.com/so/q_ 的搜索尾词尾可写“q_”,http://v.qq.com/x/search/?q= 的搜索尾词尾“q=”, 如两个Url的搜索尾词相同则只需写其中一个即可。需把所有不同的搜索尾词都写在“URL尾词”后的文本框中,不同的搜索尾词用分号隔开。

填写好后点击“搜索”按钮显示结果如下:

webcrawsearch

每次搜索模板的时候“已搜索网址”中都会罗列SqlCel浏览过的所有网址,在列表框中单击任意一条网址在下方的文本框中都会显示该网址的具体字符,双击网址则会调用浏览器打开该网址。