精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

nodejs抓取別人家的頁面的始末

開發 前端
2015年9月份全國研究生數學建模競賽的F題,旅游線路規劃問題。其中需要自己去查很多數據。例如所給201個5A級景區的位置,以及景區距離所 在省會距離等等~開始隊友小伙伴準備從百度手動去一個一個查詢,但是效率極低,在這么短的時間內,需要收集這么多數據是多么的耗時,并且也不能把大把時間 花費在查資料上,雖然說查資料是必須的,題目也鼓勵我們從網上查詢相關數據,因此在團隊中的我就想到了讓計算機幫我們去做這件事。

內容:分析并獲取頁面調取數據的API(接口),并跨域獲取數據保存在文檔中(nodejs做代理-CORS)

事由以及動機

2015年9月份全國研究生數學建模競賽的F題,旅游線路規劃問題。其中需要自己去查很多數據。例如所給201個***級景區的位置,以及景區距離所 在省會距離等等~開始隊友小伙伴準備從百度手動去一個一個查詢,但是效率極低,在這么短的時間內,需要收集這么多數據是多么的耗時,并且也不能把大把時間 花費在查資料上,雖然說查資料是必須的,題目也鼓勵我們從網上查詢相關數據,因此在團隊中的我就想到了讓計算機幫我們去做這件事。

***步,確定想要抓取的信息,獲取數據服務api

以查詢個兩地的行車時間為例,我們以百度地圖為例,見下圖

先打開需要去請求數據的網頁,打開開發人員工具(我用的是chrome),選擇Network選項卡,輸入需要查詢的內容(tips:先清除掉之前的網絡獲取紀錄,以方便接下來的借接口分析)。

點擊“查詢”,并監控網絡數據流,會發現網頁發起了很多的http請求,并返回了結果。

 通過分析所有請求,拿到想要的請求接口(一般情況下,都不會是Type為圖片類型的,并且耗時較長的)。

點擊某個請求時能看到該請求的詳細信息

查看請求的頭部信息Headers

拿到請求的地 址:requestURL,例如:http://map.baidu.com/?newmap=1&reqflag=pcmap& biz=1&pcevaname=pc2&da_par=direct&from=webmap&qt=nav&da_src=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轉碼獲得??梢园言摰刂纺玫降刂窓诓樵円幌拢瑵h字的內容

那我們的數據服務API就拿到了

編寫數據訪問頁面

接下來就是利用XMLHTTPRequerst來調取他人的服務了

 

  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="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=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> 
  29.  
  30. html 

運行察看結果:

跨域提示錯誤,跨域(見為什么瀏覽器不能跨域http://www.cnblogs.com/alvinwei1024/p/4626054.html)是瀏覽器的行為。

方法1: 通過jsonp的方法

 

  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="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=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.             dataType:"jsonp"
  20.              jsonp:"callback"
  21.             success:function(res){ 
  22.                 console.log(res) 
  23.             }, 
  24.             error:function(e){ 
  25.                 console.log(e) 
  26.             } 
  27.         }) 
  28.     </script> 
  29. </body> 
  30. </html> 
  31.  
  32. html 

運行結果:獲取到想要的數據

可以拿到,北京到上海的距離1208548,時間48617以及距離等。

  1. dis1208548

  2. kpsArray[38]

  3. rssArray[38]

  4. taxiObject

  5. time48617

  6. toll580

#p#

方法二:CORS

 除了方法以利用jsonp跨域外,還可以通過服務器做一個代理,通過cors繞過原來資源不允許跨域的限制。

本文利用node來做服務器,原因很簡單,最方便,幾句代碼就能搞定,方便又快捷。

  1. var http = require('http'); 
  2. var request_ = require('request'); 
  3. var urlencode2=require("urlencode2"); 
  4. var url=require('url'
  5. http.createServer(function (request, response) { 
  6.      var arg1 = url.parse(request.url, true).query;  
  7.     var sn=arg1.sn; 
  8.     var en=arg1.en; 
  9.     var req_url="http://api.map.baidu.com/?qt=nav&c=131&sn=2%24%24%24%24%24%24%20"
  10.           urlencode2(sn,'gbk')+"%24%240%24%24%24%24&en=2%24%24%24%24%24%24"
  11.           urlencode2(en,'gbk')+"%24%240%24%24%24%24&sy=0&ie=utf-8&oue=1&fromproduct=jsapi&res=api&callback=BMap._rd._cbk54249"
  12.       request_.get({ 
  13.             url:req_url, 
  14.             json:true 
  15.         }, 
  16.         function(error, response_, body) { 
  17.           if (!error && response_.statusCode == 200) { 
  18.             var res=-1
  19.             if(body){ 
  20.               res=body.split(',"toll":')[0];//time  s 
  21.               res=res.split('"time":')[2]; 
  22.               console.log(res) 
  23.               if(!res){ 
  24.                 res=-1
  25.               } 
  26.               else
  27.                 res=res/60
  28.               } 
  29.             } 
  30.             response.writeHead(200, { 
  31.                 "Content-Type""text/html; charset=UTF-8"
  32.                 'Access-Control-Allow-Origin':request.headers.origin 
  33.             }); 
  34.             response.end(res+'\n'); 
  35.           } 
  36.           else
  37.             // console.log(error) 
  38.           } 
  39.         } 
  40.     ) 
  41. }).listen(8888); 
  42. // 終端打印如下信息 
  43. console.log('Server running at http://127.0.0.1:8888/'); 
  44.  
  45. nodejs 

 其中,本文用到了request(用于發起http請求)模塊和urlencode2(主要用于URLEncode)模塊

request安裝:

npm install request

詳見:https://github.com/request/request

urlencode2安裝:

詳見:https://github.com/node-modules/urlencode

1 var http = require('http');
2 http.createServer(function (request, response) {
3 //...
4 response.end('welcome baby');
5 }).listen(8888);

這幾句簡單的代碼就搭建了一個web服務,端口號是8888

$ node 文件名.js

在終端輸入以上指令即可允許該服務。

1 var arg1 = url.parse(request.url, true).query;
2     var sn=arg1.sn;
3     var en=arg1.en;
4     var req_url="http://api.map.baidu.com/?qt=nav&c=131&sn=2%24%24%24%24%24%24%20"+ 5 urlencode2(sn,'gbk')+"%24%240%24%24%24%24&en=2%24%24%24%24%24%24"+ 6           urlencode2(en,'gbk')+"%24%240%24%24%24%24&sy=0&ie=utf-8&oue=1&fromproduct=jsapi&res=api&callback=BMap._rd._cbk54249";

以上是獲取查詢參數并拼接請求字符串

然后利用request向目標服務器發送請求,并解析出需要的信息

最重要的是以下代碼:

1  response.writeHead(200, {
2 "Content-Type": "text/html; charset=UTF-8", 3 'Access-Control-Allow-Origin':request.headers.origin 4 }); 5 response.end(res+'\n');

允許所有用戶跨域訪問,因此我們就能訪問自己搭建的web服務了。

我在前端頁面只需,請求我們的地址http://localhost:8888

并且指定sn(start node)與 en(end node)一并發送到服務器即可。

相關代碼:https://github.com/AlvinWei1024/blog-resources/tree/master/20150923 

作者:AlvinWei  文章出處:韋躐晟的博客 http://www.cnblogs.com/alvinwei1024/p/4834045.html

責任編輯:王雪燕 來源: 韋躐晟的博客
相關推薦

2017-11-12 21:32:52

戴爾

2025-04-08 08:20:33

2017-09-22 13:22:59

大數據南京大學宿舍

2024-11-12 08:20:31

2025-05-30 08:20:54

2016-01-08 09:49:19

DockerDocker案例云應用開發

2024-12-02 00:59:30

Spring

2025-04-22 08:20:51

2021-07-14 06:31:08

京東互聯網加薪

2025-03-06 08:21:02

判空entity對象

2022-12-12 08:14:47

2024-10-24 08:21:33

2025-02-28 08:21:00

2025-07-14 00:00:00

接口重試MQTT冪等性

2025-03-11 08:20:58

2021-01-20 05:42:27

RabbitMQMQ vhost

2019-06-11 09:35:50

戴爾

2017-12-25 11:24:57

程序員代碼編程

2017-06-13 14:15:51

戴爾協同計算汽車神話

2025-09-01 14:51:51

點贊
收藏

51CTO技術棧公眾號

亚洲品质自拍| 国产日韩电影| 成人国产精品免费观看视频| 欧美中文字幕视频| 99热6这里只有精品| 亚洲精品高潮| 欧美视频一二三区| 福利视频一区二区三区四区| 加勒比一区二区三区在线| 激情综合色播激情啊| 97国产在线观看| 激情无码人妻又粗又大| 美女扒开腿让男人桶爽久久动漫| 欧美在线观看一区| 成年人网站国产| av在线天堂播放| 99久久99久久久精品齐齐| 国产日韩欧美综合| 黑人精品无码一区二区三区AV| 国产精品精品| 亚洲毛片在线观看| 成人在线观看一区二区| 日韩黄色碟片| 色婷婷久久一区二区三区麻豆| xxxxxx在线观看| 成人高清免费在线播放| 91在线观看高清| www 成人av com| 91精品国产乱码久久久久| 免费看的黄色欧美网站| 久久久亚洲影院你懂的| 夫妻性生活毛片| 久久国产亚洲精品| 亚洲欧洲视频在线| 日本xxxx裸体xxxx| 国产欧美啪啪| 日韩午夜电影在线观看| 做a视频在线观看| 欧美色网在线| 一本高清dvd不卡在线观看| 欧美激情视频免费看| free性欧美hd另类精品| 国产精品不卡在线观看| 色播亚洲婷婷| 超碰国产在线| 亚洲国产精品激情在线观看| 久久精品国产理论片免费| 黄色a在线观看| 高清不卡在线观看| 国产成人精品福利一区二区三区| 国产精品人人爽| 黑人巨大精品欧美黑白配亚洲| 国产日韩在线看| 国产精品美女一区| 国产在线播放一区三区四| 91性高湖久久久久久久久_久久99| 国产精品xxxxxx| 免费成人av在线| 成人黄色影片在线| av无码精品一区二区三区宅噜噜| 精品亚洲porn| 国产 高清 精品 在线 a| 成人h动漫精品一区二区无码 | 久久久精品国产99久久精品芒果| 精品高清视频| 肉丝一区二区| 国产亚洲精品久| 亚洲激情一区二区| 国产色在线观看| 亚洲一区二区视频在线| 国产男女免费视频| 欧美momandson| 欧美色网一区二区| 男人操女人下面视频| 美女日韩一区| 亚洲精品久久久久中文字幕二区| 亚洲精品乱码久久久久久蜜桃图片| 牛牛视频精品一区二区不卡| 亚洲男人的天堂网站| 99精品全国免费观看| 91精品国产自产拍在线观看蜜| 九色精品免费永久在线| 久久不卡免费视频| 奇米精品一区二区三区在线观看一 | 日本美女黄色一级片| 欧美淫片网站| 91精品国产高清自在线| 中文字幕资源网| 国产成人av福利| 欧美日韩综合精品| 黄网站免费在线观看| 性做久久久久久免费观看| 91香蕉视频污版| 亚洲国产中文在线| 国产午夜精品免费一区二区三区| 国产尤物在线播放| 国产亚洲福利| 亚洲一区亚洲二区| 撸视在线观看免费视频| 亚洲乱码一区二区三区在线观看| 131美女爱做视频| 四虎国产精品成人免费影视| 亚洲国产精品资源| 九九热最新地址| 天堂在线一区二区| 成人av资源| 色视频在线免费观看| 亚洲第一搞黄网站| 亚洲第一成肉网| 尤物tv在线精品| 欧美精品九九久久| 亚洲永久精品视频| 久久久久久久综合色一本| 久久久久福利视频| 国产欧美自拍| 亚洲欧美国内爽妇网| 久久亚洲成人av| 激情综合网天天干| 婷婷久久青草热一区二区| 1区2区3区在线| 日韩一区二区免费电影| 欧美巨胸大乳hitomi| 亚洲伦理精品| 国产精品视频一区二区三区经| 一区二区三区视频网站| 色94色欧美sute亚洲线路二| 亚洲一区二区三区四区av| 99久久婷婷国产综合精品电影√| 国产成人精品网站| 亚洲三区在线播放| 亚洲福利一区二区| 久久久精品人妻一区二区三区| 色狮一区二区三区四区视频| 国产精品吹潮在线观看| 免费在线观看一级毛片| 亚欧色一区w666天堂| 欧美日韩人妻精品一区在线| 欧美黄色一级视频| 亚洲在线视频观看| 最新国产在线拍揄自揄视频| 欧美日本一区二区| 91香蕉一区二区三区在线观看| 轻轻草成人在线| 先锋影音亚洲资源| 成人国产精品| 色视频www在线播放国产成人| a片在线免费观看| 亚洲国产精品成人久久综合一区| 国产91色在线观看| 日本久久综合| 国产在线日韩在线| 免费av在线网址| 制服丝袜国产精品| 久久久久香蕉视频| 成人av先锋影音| www国产精品内射老熟女| 在线成人动漫av| 国产精品扒开腿做爽爽爽男男| 国产精品久久久久一区二区国产| 在线观看视频一区二区欧美日韩| 超薄肉色丝袜一二三| 蜜臀av性久久久久蜜臀aⅴ | 亚洲婷婷免费| 国内一区二区三区在线视频| 国产一二三在线| 日韩精品小视频| 91精品国产高清一区二区三密臀| 国产视频一区在线观看 | 成人一区二区三区中文字幕| 霍思燕三级露全乳照| 色先锋久久影院av| 国产精品成人久久久久| 麻豆视频在线播放| 欧美变态tickle挠乳网站| 91porny在线| 国产精品蜜臀在线观看| 特种兵之深入敌后| 裸体素人女欧美日韩| 亚洲国产一区在线| av成人app永久免费| 日本精品在线视频| 男人在线资源站| 精品国产污污免费网站入口| 国产视频1区2区| 亚洲欧洲精品一区二区三区 | 中文字幕+乱码+中文| 亚洲同性gay激情无套| 中国一级特黄录像播放| 日韩福利视频网| 奇米777四色影视在线看| 亚洲色图美女| 成人有码在线播放| 亚洲美女久久精品| 欧美成人高清视频| 九色视频成人自拍| 欧美大片拔萝卜| 无码人妻丰满熟妇区五十路| 一区二区三区四区亚洲| 久操视频免费看| 国产高清亚洲一区| 亚洲综合欧美激情| 亚洲黄色av| 在线观看成人免费| 真实原创一区二区影院| 99久久自偷自偷国产精品不卡| 美女写真久久影院| 久久久久久久久久久91| 欧美成人精品一区二区男人看| 亚洲成人免费在线视频| 亚洲天堂国产精品| 91极品美女在线| 欧美成人精品欧美一级乱黄| 综合中文字幕亚洲| 亚洲天堂岛国片| 91视频你懂的| 88av在线播放| 国产精品99久久不卡二区| 国产理论在线播放| 久久黄色网页| 人妻少妇精品无码专区二区| 欧美 日韩 国产一区二区在线视频| 日本成人三级| 日本在线中文字幕一区| 国产精品美女久久久久av福利| 欧美天堂一区| 国产精品久久久久久超碰| 美女av在线免费看| 午夜精品一区二区三区在线视| 黄色片网站在线| 日韩在线免费高清视频| 国产1区2区3区在线| 亚洲欧美成人精品| 亚洲三级黄色片| 国产视频精品免费播放| 天堂在线中文资源| 亚洲高清色综合| 先锋av资源站| 精品一区精品二区| 欧美精品a∨在线观看不卡| 亚洲丁香久久久| 日本免费网站在线观看| 精品国产一区二区亚洲人成毛片 | 欧美a∨亚洲欧美亚洲| 亚洲不卡一区二区三区| 国产精久久久久久| 香蕉加勒比综合久久| 日韩久久久久久久久| 亚洲成av人片一区二区梦乃| 久久久久久免费观看| 亚洲国产精品久久人人爱| 免费在线观看国产精品| 亚洲国产精品影院| 欧美一二三区视频| 欧美性感美女h网站在线观看免费| 国产一级18片视频| 欧美伊人精品成人久久综合97| 波多野结衣二区三区| 欧美色精品在线视频| 国产精品久久久久久久免费看| 91精品欧美综合在线观看最新| 国产精品国产三级国产普通话对白| 欧美另类久久久品| www.精品视频| 日韩欧美在线影院| 亚洲第一色视频| 国产偷亚洲偷欧美偷精品| 国产黄色免费在线观看| 日韩在线视频中文字幕| 青青草视频在线免费直播| 韩国19禁主播vip福利视频| 在线观看爽视频| 国产精品视频网址| 77成人影视| 欧美日韩一区二区三区在线视频 | 丰满人妻一区二区三区四区| 欧美久久免费观看| 国 产 黄 色 大 片| 亚洲女人天堂网| 欧美69xxx| 国外成人在线播放| 91tv亚洲精品香蕉国产一区| 2019国产精品视频| 亚洲婷婷丁香| 中文字幕第一页亚洲| 亚洲美女黄网| 欧美午夜aaaaaa免费视频| 国产成人精品免费视频网站| 少妇光屁股影院| 亚洲欧洲av另类| 可以免费看的av毛片| 欧美日韩色一区| 婷婷伊人综合中文字幕| 最近2019年手机中文字幕| 国精一区二区三区| 国产精品色悠悠| 美女网站色精品尤物极品姐弟| 先锋影音一区二区三区| 国产亚洲精品自拍| 91aaa精品| 国产色爱av资源综合区| 国产一级大片在线观看| 欧美日韩色综合| 女人天堂在线| 色综合视频一区中文字幕| 影音成人av| 国产日本一区二区三区| 五月开心六月丁香综合色啪| 国产1区2区在线| 成人午夜电影久久影院| 懂色av蜜臀av粉嫩av永久| 日本精品视频一区二区| 男人天堂手机在线观看| 久久亚洲精品中文字幕冲田杏梨| xxxxxx欧美| 久久精品国产理论片免费| 欧美三级午夜理伦三级中文幕| www.色就是色| 久久亚洲影视婷婷| 精品成人免费视频| 日韩欧美二区三区| av软件在线观看| 成人av色在线观看| 成人一区二区| 久久久久狠狠高潮亚洲精品| 成人av午夜电影| 久久伊人成人网| 欧美一二三区在线观看| 免费高清在线观看| 国产啪精品视频网站| 日本成人小视频| 少妇激情一区二区三区| 久久久国产精品麻豆 | 欧美色男人天堂| 成人在线高清视频| 国产精品对白刺激| 久草在线成人| 麻豆av免费在线| 久久精品这里都是精品| 日韩不卡视频在线| 亚洲美女动态图120秒| 亚洲天堂电影| 日本一区二区精品| 日韩av午夜在线观看| 91导航在线观看| 欧美日韩免费视频| 黄色一级片在线观看| 91视频九色网站| 欧美精品一区二区三区久久久竹菊| 捷克做爰xxxⅹ性视频| 一区二区三区四区av| 亚洲av无码一区二区三区性色| 欧美黄色片免费观看| 国产乱论精品| 成人免费在线小视频| 久久嫩草精品久久久久| 自拍偷拍18p| 自拍偷拍亚洲在线| 成人免费观看49www在线观看| 二级片在线观看| 国产成人综合网站| 天天综合网入口| 中文字幕视频在线免费欧美日韩综合在线看| 成人免费一区| 91成人在线视频观看| zzijzzij亚洲日本少妇熟睡| 亚洲日本视频在线观看| 一区国产精品视频| 国产乱码精品一区二区三区亚洲人| 日本精品福利视频| 成+人+亚洲+综合天堂| 五月天婷婷导航| 日韩亚洲一区二区| 日韩区欧美区| 精品人妻一区二区三区四区在线| 国产欧美一区二区精品性| 99国产精品99| 51久久精品夜色国产麻豆| 精品产国自在拍| 黄色aaaaaa| 天天操天天综合网| 97视频在线观看网站| av一区二区三区四区电影| 国产美女精品| 777777国产7777777| 亚洲精品720p| 日本免费成人| 久久久亚洲精品无码| 国产精品看片你懂得| 特级丰满少妇一级aaaa爱毛片| 国产精品女人网站| 国产综合精品一区| 69xxx免费| 精品久久久久久久久久久久久久久| 欧美电影免费观看高清完整| 色乱码一区二区三区熟女| 2023国产精品视频| 国产高清第一页| 国产剧情日韩欧美| 在线视频免费在线观看一区二区| 99热6这里只有精品|