使用Nodejs抓取<<文心雕龙>>

使用Node.js进行HTTP请求抓包编程 通过抓包可以获取到HTTP请求和响应的详细信息,包括请求头、请求体、响应头和响应体等。你可以根据自己的需求,使用不同的HTTP库和处理请求的方式来实现更复杂的功能。在成功的情况下,我们打印出响应的状态码、响应头和响应数据,并将响应数据返回给客户端。在失败的情况下,我们打印出错误信息,并返回一个HTTP状态码为500的错误响应。在上面的代码中,我们创建了一个HTTP服务器,并指定了一个处理请求的回调函数。在控制台上,我们可以看到打印出的HTTP请求和响应的详细信息。,并处理了请求成功和失败的情况。 阅读详情
/**
 * Created by Administrator on 2017/11/3.
 * 获取文心雕龙 保存到数据库
 */

let superagent = require("superagent");
let cheerio = require("cheerio");
let async = require("async");
let mongoose = require('mongoose');
let Schema = require('mongoose').Schema;

const setData = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
    'Referrer': 'www.baidu.com',
    'Content-Type': 'text/plain; charset=UTF-8'
};

/**
 *诗 表
 */
const Poetry = mongoose.model('poetry', new Schema({
    title  :   String,    //诗的标题
    author :   String,    //作者
    href   :   String,    //链接
    content:   String,    //诗的内容
    dynasty:   String,    //朝代
    tag    :   Array      //标签
}))

mongoose.connect('mongodb://localhost/alone', function (err) {
    if (err) {
        console.log(err.message);
    } else {
        console.log("^_^数据库已连接...请开始你的表演^_^")
    }
});

function getContent(href,title) {
    superagent.get(href)
        .set(setData)
        .end((err, res) => {
            let $ = cheerio.load(res.text);
            let obj={
                href,
                title,
                author:'刘勰',
                tag:['文心雕龙'],
                dynasty:'南朝'
            }
            obj.content=$(".contson").html();
            let new_poetry = new Poetry(obj)
            new_poetry.save();
            // return content;
        })
}
//程序主入口
let mainFun = (target_url, selector) => {
    superagent.get(target_url)
        .set(setData)
        .end((err, res) => {
        let $ = cheerio.load(res.text);
    let selectorArr = $(selector);
    let poetryArr = [];
    for (let i = 0; i < selectorArr.length; i++) {
        let item = $(selectorArr[i]);
        let href = item.attr('href');
        let title = item.text();
        if(href.indexOf('http://')!==0){
            href='http://so.gushiwen.org'+href;
        }
        getContent(href,title);
        console.log("已保存到数据库^_^");
    }
})
};

mainFun('http://www.gushiwen.org/guwen/wenxin.aspx', '.bookcont a');
nodejs爬虫抓取页面内容 nodejs爬虫抓取页面内容,简单好用 立即下载

相关推荐

nodejs简单抓包工具使用详解

主要介绍了nodejs简单抓包工具使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

如何使用 Node.js 进行网络抓取?

Node.js 以其高效的性能、丰富的生态系统和广泛的应用场景,成为现代Web开发中非常流行的一种技术。本文将介绍如何使用Node.js进行网页抓取,包括基本概念、工具使用及反检测方法,帮助高效获取和处理网站数据。

wellshake的博客 1536

PCB设计必看:铜皮厚度与载流量的黄金比例(附实用对照表)

本文深入探讨了PCB设计中铜皮厚度与载流量的关键关系,提供了实用的对照表和设计技巧。通过分析基础原理、标准选择策略及常见误区,帮助工程师优化PCB设计,确保电路板的可靠性和安全性。特别适用于需要处理大电流或高频应用的电子设计场景。

milk8的博客 512

nodejs的网络爬取

我们有的时候需要一些数据,但是自己去造又比较的麻烦,于是就有了一种解决方案,使用工具去抓取到自己想要的内容。这是一款基于nodejs的抓包工具(Crawler),使用方式还算比较简单,直接看代码吧。 官网任意门:https://www.npmjs.com/package/crawler 安装:npm i crawler var Crawler = require("crawler"); var c = new Crawler({ maxConnections : 10, // Thi

cautionHua的博客 516

CANoe诊断测试避坑指南:DTC故障注入与ECU刷写失败的N个常见原因排查

本文深入解析CANoe诊断测试中的常见问题,重点探讨DTC故障注入与ECU刷写失败的排查策略。从会话管理、安全访问到数据完整性校验,提供实战经验与CAPL脚本示例,帮助工程师规避诊断测试中的典型陷阱,提升车载网络通信与ECU刷写的可靠性。

weixin_29278805的博客 464

OpenVox 8FXO板卡驱动安装记录

OpenVox A800P和A1200P的板卡驱动安装及问题解决方法

clliu的专栏 2463

Whistle 实现原理 —— 从 0 开始实现一个抓包工具

导语通过这篇文章可以大致了解 Whistle 的实现原理,并学习如何实现一个简单的抓包调试工具。项目 Github 地址:https://github.com/avwo/whistleW...

LuckyWinty的博客 879

CTF实战:Wireshark数据包分析从入门到精通(附经典题型解析)

本文详细介绍了Wireshark在CTF比赛中的数据包分析技巧,从基础抓包到高级协议解析,涵盖HTTP流量分析、USB键盘数据还原等实战案例。通过经典题型解析,帮助读者掌握精准过滤、文件提取等核心技能,提升CTF竞赛中的网络流量分析能力。

pz890123的博客 587

HTTPS 与 Node.js,从部署到抓包调试的工程实战指南

本文面向开发者与运维,讲述在 Node.js 上部署 HTTPS 的实践要点:证书链、SNICallback、HTTP/2、常见故障与排查命令。

2501_91591841的博客 1264

别再搞混了!MATLAB通信仿真中EbN0转SNR的保姆级公式推导与避坑指南

本文深入解析MATLAB通信仿真中EbN0与SNR转换的核心公式,揭示数字仿真与理论系统的关键差异。通过真实案例展示错误参数设置导致的隐蔽问题,并提供完整的参数自查清单和正确实现代码,帮助工程师和学生避免常见错误,确保仿真结果准确可靠。

weixin_28746223的博客 348

机器学习笔记——30种常见机器学习算法简要汇总

本笔记介绍机器学习中常见的30种机器学习算法。

haopinglianlian的博客 3201

使用Nodejs抓取《文心雕龙》全文:TaoToken统一通道下的请求编排与校验

用Nodejs抓取《文心雕龙》全文时,先建目录任务队列,再按并发窗口拉取详情,最后统一清洗落盘并做三步校验。请求层统一走TaoToken通道,集中配置请求头、超时与重试参数,换站点无需改业务代码。官网:https://taotoken.net/?utm_source=taotoken_aicg_blog_end

weixin_42575505的博客 60

openmediavault(OMV) (1)安装部署

EXT3(Third Extended File System): EXT3 是 Linux 中广泛使用的日志文件系统,是 EXT2 文件系统的升级版本。这里可以根据自己的需求进行设置,目前只设置了自动登出为1天,为方便后续配置使用,其他设置可根据自己的具体需求进行设置。通过cd 命令进入到我们的raid存储中,通过ls发现里面没有任何的数据,因为我们的raid存储中还未创建任何数据。我的系统要安装在100G的磁盘上,故选择100G的磁盘,实际可以根据具体情况选择。

Monster✺◟(∗❛ัᴗ❛ั∗)◞✺的博客 2168

使用Nodejs抓取《文心雕龙》并接入TaoToken:从请求到结构化存储的完整实践

用 Node.js 抓取《文心雕龙》五十篇并落盘 JSON,本文给出 axios+cheerio+p-limit 完整脚本与 .env 配置,并演示如何通过 TaoToken 统一管理请求凭证与 API 通道,避免硬编码 Key。注册见 https://taotoken.net/?utm_source=taotoken_aicg_blog_end ,从目录遍历到结构化存储一步跑通。

GreenLeaf78的博客 152

【图像识别】基于计算机视觉实现红绿灯识别matlab代码

​ 1 简介 现如今,盲人出行依旧是一大问题.面对无处不在的红绿灯,盲人无法通过眼睛辨识红绿灯的状态,出行受阻.为了解决盲人识别红绿灯的难题,本文提出了一种基于MATLAB进行红绿灯识别的系统.对交通灯的识别主要基于对交通灯的色彩及形状特征.基于信号灯的亮度对其进行分割,提取,并设置了一种自动最优选择阈值的方法.再由HIS彩色空间的H信息识别颜色.最后根据二值化的交通灯的横坐标和纵坐标方向的投影进行形状匹配识别. 2 部分代码 clc clear all close all a=imread('m

qq_59747472的博客 2691

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Charles 抓 nodejs 的 波场 tron https 网络请求环境搭建

Proxifier 4.12 (全局代理转发工具)Charles 4.6.3 (抓包工具) 抓 tronweb tron 接口抓包

YiNST的博客 472

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Node.js数据抓取技术实战示例

Node.js常用的库有哪些呢?比如axios或者node-fetch用来发送HTTP请求,cheerio用来解析HTML,如果是动态网页的话可能需要puppeteer这样的无头浏览器。这些工具的组合应该能满足大部分需求。

weixin_44617651的博客 1538

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

nodejs 中 axios 设置 burp 抓取 http 与 https

nodejs 中 axios 设置 burp 抓取 http 与 https

qq_41891666的博客 1044

nodejs调用c++开发windows网络抓包工具

由于node接口有限,一些网络基层操作还得依靠c++来, 可能也是为了避免大家那么卷而选择保护大家吧,不说二话,咱直接上代码。下面会附上node调用c++的教程。

sinat_34353062的博客 548

Node.js-使用腾讯开源工具LivePool进行web抓包

LivePool是腾讯全端 AlloyTeam开发的一个web抓包工具,已经开源。LivePool 是一个基于NodeJS,类似 Fiddler 能够支持抓包和本地替换的 Web 开发调试工具,是 Tencent AlloyTeam 在开发实践过程总结出的一套的便捷的 WorkFlow 以及调试方案。...

记录和分享程序人生的点点滴滴 3739

怎么通过fiddler抓非浏览的包 postman 以及 nodejs 脚本 http 模块 以及 axios 的包?(非常简单的方法)

非浏览器的fiddler包怎么抓?postman、nodejs发送的请求抓不到?一个思路统统轻易搞定!

小菜鸡程序媛的挣扎史 4440

nodejs 实现抓取数据

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33830216的博客 896

nodejs抓取数据

示例代码 const axios = require('axios'); const fs = require('fs'); const request = require('request').defaults({ //忽略证书安全 rejectUnauthorized: false, }); const path = require('path'); const md5 = require('md5-node'); const cheerio = require('cheer.

杰姆小生的博客 567

利用NodeJS抓取某商品信息

利用NodeJS作为后端服务器抓取某商品信息,并解析出来然后以react+webpack+antd为前端界面展示出来。抓取的商品信息展示在前端界面如下:后台代码如下:// 引入依赖 var express = require('express'); var utility = require('utility'); var eventproxy = require('eventproxy'); v...

robinson_911的专栏 2837

nodejs简单抓包工具

就是简简单单写程序的我为什么需要抓包? 其实在平时写demo的时候需要用到一些图片和文本的资源的,但是需求量比较大,这个时候就想去网站上面直接复制啊,然后图片另存为啊,什么的一系列繁琐的操作。 但是现在不需要了,你只要看到这篇文章,你就很轻松了。 本项目Github地址:https://github.com/xiaoqiuxiong/reptileDemo 1.在你的电脑...

weixin_30449239的博客 2022

使用NodeJs,实现数据抓取

学习笔记 前言 近期做一个数据抓爬工具,最开始使用的是C#控制台应用,同时正则表达式去过滤数据,看着还行,可每次运行都依附于.net framework很是不爽,于是想整点其他的方法。本人还是比较喜欢javascript的,思来想去决定用服务器端的javascript来试试! 环境、工具准备 1、[必装] 安装nodejs,下载最新nodejs,点击此处 2、[选装] 安装iisnode...

weixin_30616969的博客 384
上一篇: 最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等
下一篇: 安装node-sass 模块失败解决办法
拿我格子衫来
拿我格子衫来 领域专家: 前端开发技术领域 领域专家: 前端开发技术领域
博客等级 码龄10年 6万+粉丝 858原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拿我格子衫来

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值