安利一個輕量級爬蟲工具node-crawler
阿新 • • 發佈:2018-12-19
地址
實質
爬蟲無非就是分析網頁, 分析介面, 取得你想要的資料, 取得資料有兩種方式:
- 對於直接請求得到的是靜態頁面, 直接分析 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;