#异步流程控制目前看还有疑惑

var fs = require("fs");
var request = require('request');
var cheerio = require('cheerio');
var requrl = 'http://www.ruyile.com/xxlb.aspx?id=1&t=2';
var temp = '';
request(requrl, function(error, response, body) {if (!error && response.statusCode == 200) {acquireData(body);}
});function acquireData(data) {var $ = cheerio.load(data);var province = $('.qylb').toArray();for (var i = 0; i < 31; i++) {var provinceData = province[0].children[i].children[0].data + ',';var provinceUrl = province[0].children[i].attribs.href;provinceQuery(provinceUrl, provinceData);}
}function provinceQuery(provinceUrl, provinceData) {request(provinceUrl, function(error, response, body) {if (!error && response.statusCode == 200) {cityData(body, provinceData);}})
}function cityData(data1, cData) {var $ = cheerio.load(data1);var city = $('.qylb').toArray();if (city[1].children.length > 0) {for (var i = 0; i < city[1].children.length; i++) {var cityHref = city[1].children[i].attribs.href;var transform = cData + city[1].children[i].children[0].data + ',';cityQuery(cityHref, transform);}}
}function cityQuery(cityHref, trans) {request(cityHref, function(error, response, body) {if (!error && response.statusCode == 200) {districtData(body, trans);}})
}function districtData(data2, dData) {var $ = cheerio.load(data2);var city = $('.qylb').toArray();if (city[2]) {if (city[2].children.length > 0) {for (var j = 0; j < city[2].children.length; j++) {var district = city[2].children[j].children[0].data + ',' || ' ,';var transf = dData + district;var districtHref = city[2].children[j].attribs.href;districtQuery(districtHref, transf);}}}
}function districtQuery(dishref, tran) {request(dishref, function(error, response, body) {if (!error && response.statusCode == 200) {streetData(body, tran);}})
}function streetData(data3, sData) {var $ = cheerio.load(data3);var add = $('.xxlb .sk h4').toArray();if (add.length > 0) {for (var i = 0; i < add.length; i++) {var schoolNmae = '暂无';var tel = '暂无';var postal = '暂无';var dis = '暂无';if (add[i].children[0].children[0]) {schoolNmae = add[i].children[0].children[0].data;if (add[i].next) {if (add[i].next.data) {tel = (add[i].next.data).replace(/^.+:/, '');}if (add[i].next.next && add[i].next.next.next && add[i].next.next.next.data) {if (add[i].next.next.next.data.indexOf('邮编') > -1) {postal = (add[i].next.next.next.data).replace(/^.+:/, '');if (add[i].next.next.next.next.next && add[i].next.next.next.next.next.data) {dis = (add[i].next.next.next.next.next.data).replace(/^.+:/, '');}} else {dis = (add[i].next.next.next.data).replace(/^.+:/, '');}}}}temp = sData + schoolNmae + ',' + tel + ',' + postal + ',' + dis + '\n';xxre(temp);}}}function xxre(temp) {//    request('http://192.168.1.xx/xx/text.php?message=' + encodeURI(temp), function(error, response, body) {//        if (!error && response.statusCode == 200) {////        }//    })fs.appendFile('spider.txt', temp, 'utf8', function(err) {if (err) {console.log(err);}});
}

#

var fs = require("fs");
var request = require('request');
var cheerio = require('cheerio');
var requrl = 'http://www.ruyile.com/xxlb.aspx?id=1&t=2';
var temp = '';
request(requrl, function(error, response, body) {if (!error && response.statusCode == 200) {acquireData(body);}
});function acquireData(data) {var $ = cheerio.load(data);var province = $('.qylb').toArray();for (var i = 0; i < 31; i++) {if (i == 0 || i == 1 || i == 8 || i == 21) {continue;}//var i = 9;var provinceData = province[0].children[i].children[0].data + ',';var provinceUrl = province[0].children[i].attribs.href;provinceQuery(provinceUrl, provinceData);}
}function provinceQuery(provinceUrl, provinceData) {request(provinceUrl, function(error, response, body) {if (!error && response.statusCode == 200) {cityData(body, provinceData);}})
}function cityData(data1, cData) {var $ = cheerio.load(data1);var city = $('.qylb').toArray();if (city[1].children.length > 0) {for (var i = 0; i < city[1].children.length; i++) {//var i = 1;var cityHref = city[1].children[i].attribs.href;var transform = cData + city[1].children[i].children[0].data + ',';cityQuery(cityHref, transform);}}
}function cityQuery(cityHref, trans) {request(cityHref, function(error, response, body) {if (!error && response.statusCode == 200) {districtData(body, trans);}})
}function districtData(data2, dData) {var $ = cheerio.load(data2);var city = $('.qylb').toArray();if (city[2]) {if (city[2].children.length > 0) {for (var i = 0; i < city[2].children.length; i++) {//var i = 2;var district = city[2].children[i].children[0].data + ',' || ' ,';var transf = dData + district;var districtHref = city[2].children[i].attribs.href;districtQuery(districtHref, transf);}}}
}function districtQuery(dishref, tran) {request(dishref, function(error, response, body) {if (!error && response.statusCode == 200) {streetData(body, tran, dishref);}})
}function streetData(data3, sData, shref) {var $ = cheerio.load(data3);var add = $('.xxlb .sk h4').toArray();var p = $('.zys').toArray();console.log(sData);//console.log(shref);var nowPage = parseInt(p[0].prev.data);var totalPage = parseInt(p[0].children[0].data);var rhref = shref;if (nowPage < totalPage) {++nowPage;if (rhref.indexOf('&p=') > -1) {rhref = rhref.replace(/&p=\d+$/, '');rhref += '&p=' + nowPage;} else {rhref += '&p=' + nowPage;}districtQuery(rhref, sData);}if (add.length > 0) {for (var i = 0; i < add.length; i++) {var schoolNmae = '暂无';var tel = '暂无';var postal = '暂无';var dis = '暂无';if (add[i].children[0].children[0]) {schoolNmae = add[i].children[0].children[0].data;if (add[i].next) {if (add[i].next.data) {tel = (add[i].next.data).replace(/^.+:/, '');}if (add[i].next.next && add[i].next.next.next && add[i].next.next.next.data) {if (add[i].next.next.next.data.indexOf('邮编') > -1) {postal = (add[i].next.next.next.data).replace(/^.+:/, '');if (add[i].next.next.next.next.next && add[i].next.next.next.next.next.data) {dis = (add[i].next.next.next.next.next.data).replace(/^.+:/, '');}} else {dis = (add[i].next.next.next.data).replace(/^.+:/, '');}}}}temp = sData + schoolNmae + ',' + tel + ',' + postal + ',' + dis + '\n';xxre(temp);}}}function xxre(temp) {fs.appendFile('wx.txt', temp, 'utf8', function(err) {if (err) {console.log(err);}});
}

转载于:https://www.cnblogs.com/qingmingsang/articles/5334108.html

[node] 对某网站的简单爬虫相关推荐

  1. 爬取某壁纸网站图片(简单爬虫,入门)

    1. 工具 PyCharm Python3.7 requests库 2. 网页分析 2.1 F12打开浏览器开发者模式,使用抓包工具分析网页. 2.2 浏览分析网页,发现先向下滚动时,会向服务器发送请 ...

  2. 运用node实现简单爬虫

    node.js的强大就无需再去重复了,越来越多的公司在使用node.js,还有一点不得不提的优势就是node用的是javascript的语言,对于前端开发工程师来说,没有理由不去get这一强大的技能. ...

  3. 简单NLP分析套路(1)----语料库积累之3种简单爬虫方式应对大部分网站

    目录 近期听课的思考 语料库的记录 3种爬虫 urllib.request + BeautifulSoup scrapy 与xpath 使用selenium 模拟浏览器行为 新的改变 相关链接 未完待 ...

  4. python爬虫下载链接_【Python项目】简单爬虫批量获取资源网站的下载链接

    简单爬虫批量获取资源网站的下载链接 1 由来 自己在收集剧集资源的时候,这些网站的下载链接还要手动一个一个复制到百度云离线下载里,稍微懂了一点编程就不想做这种无意义的劳动了.于是就写了一个这样的一个小 ...

  5. 公众号简单爬虫--把公众号文章全部转载到网站(三)

    公众号简单爬虫--把公众号文章全部转载到网站(三) 根据上一篇的方法,我们得到了一个包含标题,时间,作者,封面,文章连接等信息的json文件.接下来,就是要提取文章详细信息和把一系列的信息写入数据库. ...

  6. python爬虫网站简单_Python爬虫之简单爬虫框架实现

    简单爬虫框架实现 目录 框架流程 调度器 url管理器 网页下载器 网页解析器 数据处理器 具体演示效果 框架流程 调度器 #导入模块 import Url_Manager import parser ...

  7. 使用HttpClient实现一个简单爬虫,抓取煎蛋妹子图

    第一篇文章,就从一个简单爬虫开始吧. 这只虫子的功能很简单,抓取到"煎蛋网xxoo"网页(http://jandan.net/ooxx/page-1537),解析出其中的妹子图,保 ...

  8. 反击“猫眼电影”网站的反爬虫策略

    0×01 前言 前两天在百家号上看到一篇名为<反击爬虫,前端工程师的脑洞可以有多大?>的文章,文章从多方面结合实际情况列举了包括猫眼电影.美团.去哪儿等大型电商网站的反爬虫机制.的确,如文 ...

  9. 【Python】学习笔记总结7(简单爬虫)

    文章目录 七.Python简单爬虫 1.重要知识与技能 2.使用re表达式抓取网页文件 3.使用requests抓取网页 4.使用re正则表达式提取数据 5.使用xPath工具提取数据 6.使用Bea ...

  10. .net core 实现简单爬虫—抓取博客园的博文列表

    一.介绍一个Http请求框架HttpCode.Core HttpCode.Core 源自于HttpCode(传送门),不同的是 HttpCode.Core是基于.net standard 2.0实现的 ...

最新文章

  1. 苹果和Siri的七年之痒:Siri的落寞之路
  2. 0.2秒居然复制了100G文件?
  3. 分布式事务开局第一篇,从数据库事务隔离级别说起
  4. 解决Spring boot整合mybatis,xml资源文件放置及路径配置问题
  5. SwitchHosts!提示没有切换权限:C:\WINDOWS\system32\drivers\etc\host 文件无法修改
  6. mysql where 大小写_java – 使用select where where Mysql在Mysql中区分大小写
  7. centos 6.5 x64 上安装mariadb10
  8. c#压缩解压缩bzip2、tar、zip、gzip、deflate、ntdll
  9. Mysql中外键的 Cascade ,NO ACTION ,Restrict ,SET NULL
  10. 如果P = NP 则 NP = co-NP.
  11. jQuery增加删除修改tab导航特效
  12. SQL Server导出MDF数据库文件
  13. x264 vbv-maxrate与vbv-bufsize对码率控制
  14. 无线网络dns服务器设置,netgear 无线dns设置教程
  15. android模拟器 adb 命令,安卓模拟器下 使用ADB命令
  16. 金融套利策略:理解统计套利的工作原理
  17. win 7 与 virtualbox ubuntu 共享文件夹
  18. ArcGIS裁剪带有黑边的影像图两种方法
  19. 【工具】-10 UML时序图(Sequence Diagram)学习笔记
  20. 深度长文:智能手机的社会学研究

热门文章

  1. 携手做大做强中国集成电路产业链
  2. linux vi恢复文件怎么打开文件,Linux上vi编辑文件非正常退出后文件恢复
  3. web开发环节,阿里前端工资多少
  4. 无线中继后要不要关闭dhcp服务器,tplink无线路由器WDS桥接后副路由开启DHCP 好还是关闭好。...
  5. android url带参数传递,android平台通过http post方式向远程URL传递参数并获取返回数据...
  6. 红黑树时间复杂度证明(O(lgn))
  7. win10 软路由_千元完美的家用低功耗软路由:J4125 迷你电脑GK41开箱体验!又是播放器,也是服务型AIO!...
  8. Java 上机----实训操作6---汽车类
  9. 小福利,e分钟带你爬取海量专利数据并保存为excel文件
  10. UiPath常用元素识别