怎样在阿里云服务器上编写爬虫程序

阿里云服务器

做程序开发的码农面临编写爬虫程序是经常遇到的事情,码农本身就是一个苦逼的象征,除了开发一些cms类的管理软件之外,还可能需要编写一些类似百度蜘蛛和谷歌机器人的爬虫工作,没办法,身在江湖,老板一声令下,硬着头皮也要去做,如果说半个“不”字,直接回受到老板的冷落,甚至边沿化,为了保住程序员的饭碗,还是要去查阅资料,完成项目工作。

今天详细介绍下编写实时爬虫抓取微博热搜榜的数据。

首先,我们准备两个文件,一个asp程序编写的爬虫文件,另一个使用vb语言,也就是visal basic编程语言写一个定时工具,实时触发爬虫文件,然后把这两个文件放在阿里云服务器上,最好选择阿里云美国服务器,不至于为了写个爬虫程序,还要去ICP备案,那样太麻烦。

爬虫文件原理,通过xmlhttp异步请求微博热搜榜页面数据,设置以下对象:

set   http=createobject("MSXML2.ServerXMLHTTP")    

这个组件无需在云服务器注册,win系统自带这个服务应用组件,这个组件可以请求远程网页数据,目标url当然是微博热搜页面。

以下为具体代码:


 function   getHTTPPage(url)   ’创建函数名称,并传递参数

        dim   Http   

        set   http=createobject("MSXML2.ServerXMLHTTP")     ‘创建组件对象

        Http.open   "GET",url,false   ‘发送远程请求数据

        Http.send()   

        if   Http.readystate<>4   then   ’数据返回状态

        exit   function   

        end   if   

        getHTTPPage=bytesToBSTR(Http.responseBody,"utf-8") ‘返回数据编码格式

        set   http=nothing   

        if   err.number<>0   then   err.Clear   、程序报错隐藏

  end   function  

通过以上函数获取远程网页数据,然后对返回数据进行处理,返回数据中既包括我们需要的热搜词数据,也含有很多无用的格式以及其他噪音数据,我们利用数据截取字符串,来获取主体数据。

startnub=instr(C_baidu_all,"<tr class=""thead_tr"">") 

endnub=instr(C_baidu_all,"<!--/内容-->") 

这个类似数据采集的起始字符串特征,要唯一标示,然后结束字符串特征,获取中间的重要数据及格式。

再利用正则规则剔除内含的html格式,从而获取每行热搜词,并生成文件,把数据储存在文件中。

整个过程包含远程请求数据、处理数据、储存数据三个重要环节,每个环节都有很多细节要处理,感兴趣的码农可以查阅相关资料。

最后一步,还要利用basic桌面级编程语言写个定时器,定时请求爬虫文件,间隔时间执行,因为微博热搜词也在实时变化,用户的需求一直都在变,我们可以设置间隔多少分钟自动重新获取数据并保存下来。

visal basic编程环境中有个定时器控件,可以直接使用,还有webbrowser控件,主要用于请求网页的,类似内嵌的小型浏览器,具体用法可以参考文献。