你的位置:首页 > 软件开发 > Java > nodejs抓取别人家的页面的始末

nodejs抓取别人家的页面的始末

发布时间:2015-09-24 03:00:18
内容:分析并获取页面调取数据的API(接口),并跨域获取数据保存在文档中(nodejs做代理-CORS)事由以及动机2015年9月份全国研究生数学建模竞赛的F题,旅游线路规划问题。其中需要自己去查很多数据。例如所给201个5A级景区的位置,以及景区距离所在省会距离等等~开始队友小 ...

nodejs抓取别人家的页面的始末

内容:分析并获取页面调取数据的API(接口),并跨域获取数据保存在文档中(nodejs做代理-CORS)


事由以及动机

2015年9月份全国研究生数学建模竞赛的F题,旅游线路规划问题。其中需要自己去查很多数据。例如所给201个5A级景区的位置,以及景区距离所在省会距离等等~开始队友小伙伴准备从百度手动去一个一个查询,但是效率极低,在这么短的时间内,需要收集这么多数据是多么的耗时,并且也不能把大把时间花费在查资料上,虽然说查资料是必须的,题目也鼓励我们从网上查询相关数据,因此在团队中的我就想到了让计算机帮我们去做这件事。

第一步,确定想要抓取的信息,获取数据服务api

以查询个两地的行车时间为例,我们以百度地图为例,见下图

nodejs抓取别人家的页面的始末

先打开需要去请求数据的网页,打开开发人员工具(我用的是chrome),选择Network选项卡,输入需要查询的内容(tips:先清除掉之前的网络获取纪录,以方便接下来的借接口分析)。

点击“查询”,并监控网络数据流,会发现网页发起了很多的http请求,并返回了结果。

nodejs抓取别人家的页面的始末

 通过分析所有请求,拿到想要的请求接口(一般情况下,都不会是Type为图片类型的,并且耗时较长的)。

点击某个请求时能看到该请求的详细信息

nodejs抓取别人家的页面的始末

查看请求的头部信息Headers

nodejs抓取别人家的页面的始末

拿到请求的地址:requestURL,例如:http://map.baidu.com/?newmap=1&reqflag=pcmap&biz=1&pcevaname=pc2&da_par=direct&from=webmap&qt=nav&da_src='/images/loading.gif' data-original=pcmappg.searchBox.button&c=289&sn=2$$$$$$%E4%B8%8A%E6%B5%B7%E5%B8%82$$0$$$$&en=2$$$$$$%E5%8C%97%E4%BA%AC%E5%B8%82$$0$$$$&sc=289&ec=289&rn=5&extinfo=63&tn=B_NORMAL_MAP&nn=0&ie=utf-8&l=12&b=(13503777.31,3639994.64;13542753.31,3642234.64)&t=1443022534161

并分析,一般我们要看的是URL中的querey部分,也就是?后面的内容,一般来说由很多(字母+百分号)构成的为中文字符,是汉字被url转码获得。可以把该地址拿到地址栏查询一下,汉字的内容

nodejs抓取别人家的页面的始末

那我们的数据服务API就拿到了

编写数据访问页面

接下来就是利用

nodejs抓取别人家的页面的始末nodejs抓取别人家的页面的始末
 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4   <meta charset="UTF-8"> 5   <title>getData</title> 6 </head> 7 <body> 8   <script src='/images/loading.gif' data-original="http://code.jquery.com/jquery-2.1.4.min.js"></script> 9   <script>10     var sn="北京市";11     var en="上海市";12     var url="http://map.baidu.com/?newmap=1&reqflag=pcmap&biz=1&pcevaname=pc2&da_par=direct&from=webmap&qt=nav&da_src='/images/loading.gif' data-original=pcmappg.searchBox.button&c=289&sn=2$$$$$$"+13     sn+"$$0$$$$&en=2$$$$$$"+14     en+"$$0$$$$&sc=289&ec=289&rn=5&extinfo=63&tn=B_NORMAL_MAP&nn=0&ie=utf-8&l=12&b=(13503777.31,3639994.64;13542753.31,3642234.64)&t=1443022534161";15 16     $.ajax({17       url:url,18       type:"get",19       success:function(res){20         console.log(res)21       },22       error:function(e){23         console.log(e)24       }25     })26   </script>27 </body>28 </html>

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:nodejs抓取别人家的页面的始末

关键词:JS

JS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。