800819103
在线客服,实时响应qq群
在线客服,实时响应客服电话
13318873961这里指的是网络爬虫、网络蜘蛛,用于在茫茫互联网世界中抓取特定数据,常见的例子就是搜索引擎。
搜索引擎的爬虫当然高端大气上档次,但这次只是需要定向的抓取一些数据,只需要一些简单的操作便能够实现,这次的目标是** 定向抓取天气预报网站的数据,每隔五分钟抓取一次 **
本次所用的是nodejs来编写爬虫程序,所以得先安装node和npm工具,一切准备就绪还需安装如下依赖包
//核心依赖"http": "latest","cheerio": "latest", //类jquery,用于解析网页"request": "latest"
主要的工作其实很多前辈已经做过了,像http请求模拟,解析网页等等,这里只需要对爬下来的网页内容进行数据提取就OK了,代码如下:
//抓取当前数据function fetchData(url) { http.get(url, function(res) { var html = ''; res.on('data', function(chunk) { html += chunk; }); res.on('end', function() { var $ = cheerio.load(html); try { //时间格式化 var DateTime = $('#air>i>div:last-child').text(); var date = DateTime.split(' '); var strDate = new Date().getFullYear() + '年' + date[0]; var fmDate = strDate.replace(/(\d{4}).(\d{1,2}).(\d{1,2}).+/mg, '$1-$2-$3'); var fetchTime = fmDate + ' ' + date[1]; //取得露点 var dewP = $('#day-part').children('p'); let dew = dewP[2].childNodes[1].data; //地区、温度、湿度 let local = $('#current>h2>a').text(); let temp = $('#current>div:first-child>a>b').text(); let hum = $('.hum>p').text(); //风速,风向 let windP = $('.wind>p>span').children(); let wind = windP[1].prev.data.trim(); let windArr = wind.split(' '); let wind_speed = windArr[1] + windArr[2]; let wind_direc = windArr[0]; //体感温度 let realFeel = $('.rfeel>b').text(); //保存为数组是因为对接下来存储到数据库方便 let meteoData = [fetchTime, local, temp, hum, dew, wind_speed, wind_direc, realFeel]; insertSql(meteoData); } catch (error) { console.error(error); } }) }) }
可以看到,爬数据并不难,上面的代码已经把数据解析好了,接下来的工作主要是存储到数据库和添加定时任务:
1.存储到数据库
实时数据表
//这里需要引入mysql模块npm install mysql --save//核心代码如下function insertSql(data) { var insertStr = 'insert into real_meteorological(date_time,' + 'local,temp,hum,dew,wind_speed,wind_direction,real_feel)' + ' values(?,?,?,?,?,?,?,?)'; connection.query(insertStr, data, function(err, results) { if (err) { console.error(err); } else { console.info('success') } }); }
2.定时任务
定时任务采用setInterval()
,代码如下
function loopCatch() { setInterval(function() { fetchData(url); }, 5 * 60 * 1000); }
想要做到数据抓取并不是很难,前人已经做了太多的工具可以用,我们需要的只不过是合理利用这些工具来组合成我们需要的工具。
顺便说一句:这里测试用的url我并没有给出来,但做法是差不多的
代理精灵IP平台专业提供HTTP代理IP服务,其中的动态高质量代理重点推荐,多年来服务了很多顾客朋友,高效稳定的质量,受到了一致的好评。代理精灵IP将会继续努力,为广大顾客提供更优质的产品!咨询QQ:800819360,网址:http://www.jinglingdaili.com/