1. 程式人生 > >安利一個輕量級爬蟲工具node-crawler

安利一個輕量級爬蟲工具node-crawler

地址

實質

爬蟲無非就是分析網頁, 分析介面, 取得你想要的資料, 取得資料有兩種方式:

  • 對於直接請求得到的是靜態頁面, 直接分析 html, 取得自己需要的資料
  • 還有就是通過 api 介面獲取到的資料, 這樣分析下引數, 就行

程式碼

var express = require("express");
var router = express.Router();

router.get("/", function(req, res, next) {
  // 設定請求頭
  res.header("Access-Control-Allow-Origin", "*");
  res.header
("Access-Control-Allow-Headers", "X-Requested-With, Content-Type"); res.header("Access-Control-Allow-Methods", "PUT, GET, POST, DELETE, OPTIONS"); // 設定型別,頁數 var type = req.query.type; var page = req.query.page; type = type || "weixin"; page = page || "1"; // 引入依賴模組 var superagent = require
("superagent"); // 用來發起請求的,是一個輕量的,漸進式的ajax api var charset = require("superagent-charset"); // 防止爬取下來的資料亂碼,更改字元格式 var cheerio = require("cheerio"); // 為伺服器特別定製的,快速、靈活、實施的jQuery核心實現 // 設定請求地址 var baseUrl = "https://www.qqtn.com/"; var route = "tx/" + type + "tx_" + page + ".html"; charset(superagent)
; superagent .get(baseUrl + route) .charset("gb2312") .end(function(err, sres) { var items = []; if (err) { console.log("err", err); res.json({ code: 400, msg: "err", data: items }); return; } // 獲取網頁原始碼 var $ = cheerio.load(sres.text); // 使用jquery 獲取到標籤,屬性 $("div.g-main-bg ul.g-select-img li a").each(function(idx, element) { var $element = $(element); var $subElement = $element.find("img"); var $thumbImgSrc = $subElement.attr("src"); items.push({ title: $element.attr("title"), href: $element.attr("href"), thumbSrc: $thumbImgSrc }); }); res.json({ code: 200, msg: "success", data: items }); }); }); module.exports = router;