lelet cheerio = require('cheerio') let urlLib = require("url"); const gbk=require("gbk"); get("https://chunmu-jia.jiyoujia.com/search.htm?spm=a1z10.3-c-s.w4002-17007221856.4.4fe9ad25hb7peu&_ksTS=1512987361656_194&callback=jsonp195&mid=w-17007221856-0&wid=17007221856&path=%2Fsearch.htm&search=y&csy=1&pv=20608:76856228").then((b) => { console.log("77777777") var $ = cheerio.load(gbk.toString('utf-8',b)); $(".photo").each(function(i, elem) { console.log($(this).find("img").attr("src")); }); }, (err) => { console.log("888888888") console.log(err); }); function get(url) { return new Promise((resolve, reject) => { _get(url) function _get(url1) { var mod = null; var res = urlLib.parse(url1); if (res.protocol == "http") { mod = require("http"); } else { mod = require("https"); } const req = mod.request({ host: res.host, path: res.path, port: res.port }, (res) => { console.log(res.statusCode ) if (res.statusCode >= 200 && res.statusCode < 300) {//表示獲取的網頁是成功的 var arr = []; res.on("data", (data) => { arr.push(data); }); res.on("end", () => { var b = Buffer.concat(arr); resolve(b); }); } else {//狀態嗎表示爲成功 if (res.statusCode == 301 || res.statusCode == 302) {//表示網頁誒重定向了 能夠根據幾回定向找到 _get(res.headers.location) } else { console.log(res.headers) reject(res.statusCode); } } }); req.on("error", (err) => { console.log("出錯了" + err); }); req.end(); } }); }
//訪問 phantomjs XXX.js 須要抓取的頁面url //建立一個webpage對象 var page = require('webpage').create(); //拿到頁面url var system = require('system'); //設置打開頁面的大小 儘可能大,有些圖片都是懶加載 page.viewportSize = { width: 2000, height: 40000 }; //用phantomjs瀏覽器加載一個網頁 page.open(system.args[1], function (status) { // 輸出狀態 if (status !== 'success') { console.log("加載失敗") //頁面加載成功 } else { //給必定的異步時間防止那些後加載的東西 setTimeout(function () { //加載jquery page.includeJs("https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js", function () { //page.evaluate 方法內也能夠執行頁面js 在裏面組裝數據 var data = page.evaluate(function (s) { var arr = []; for (var i = 0; i < $(".J_MouserOnverReq").length; i++) { var obj = {}; obj.href = $(".J_MouserOnverReq:eq(" + i + ")").find(".pic-link").attr("data-href"); obj.price = $.trim($(".J_MouserOnverReq:eq(" + i + ")").find(".g_price").text()); obj.title = $.trim($(".J_MouserOnverReq:eq(" + i + ")").find(".J_ClickStat").text()); obj.image = $(".J_MouserOnverReq:eq(" + i + ")").find(".J_ItemPic").attr("src"); arr.push(obj); } return arr; }); console.log(JSON.stringify(data)) //把從頁面拿到的數據傳給本身的接口去處理數據 page.open('http://localhost:8080/data/data/sku_stock', 'POST', "data=" + data, function (status) { console.log('去ares-chart處理數據了'); }); }); }, 5000); } });
-------------------------end-------------------------------------javascript