全部版块 我的主页
论坛 数据科学与人工智能 大数据分析 数据仓库技术
1752 6
2023-01-15
项目要求
最低要求:
完成最少一个目标网站的分析和爬虫设计。
爬取不少于100条数据(每条数据包括最少3个字段,标题、内容和时间),并存储在数据库中。
需提交源代码。
实现方法:

采用Node.js实现爬虫
使用Node.js实现查询网页后端,HTML+js实现前端
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2023-1-15 12:05:50
Mysql.js

连接MySQL,并操作数据库
var mysql = require("mysql");
var pool = mysql.createPool({
    host: '127.0.0.1',
    user: 'root',
    password: 'root',
    database: 'crawl'
});
var query = function(sql, sqlparam, callback) {
    pool.getConnection(function(err, conn) {
        if (err) {
            callback(err, null, null);
        } else {
            conn.query(sql, sqlparam, function(qerr, vals, fields) {
                conn.release(); //释放连接
                callback(qerr, vals, fields); //事件驱动回调
            });
        }
    });
};
var query_noparam = function(sql, callback) {
    pool.getConnection(function(err, conn) {
        if (err) {
            callback(err, null, null);
        } else {
            conn.query(sql, function(qerr, vals, fields) {
                conn.release(); //释放连接
                callback(qerr, vals, fields); //事件驱动回调
            });
        }
    });
};
exports.query = query;
exports.query_noparam = query_noparam;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2023-1-15 12:07:20
示例分析(以 知网为例)
一、安装依赖(require)
安装依赖(require),相当于基础配置,没有基础配置就无法完成爬虫
var fs = require('fs');
var myRequest = require('request');
var myCheerio = require('cheerio');
var myIconv = require('iconv-lite');
require('date-utils');
var mysql = require('./mysql.js');
接下来,安装这些库,我们需要打开命令行执行以下代码,来完成对于爬虫的基础设施

npm install request
npm install cheerio'
npm install iconv-lite
当我们把request, cheerio', iconv-lite 安装完成之后,就已经完成了爬虫大业的第一步

良好的开端是成功的一半,搞完了基础配置,接下来的事就是顺水推舟一般简单了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2023-1-15 12:08:52
二、要爬取什么网站?定义该网站的域名URL
首先,需要爬取网站,我们需要先确定一个网站,再对其进行爬取。
需要给出网站的名称,以及网页链接。
代码如下:

var source_name = "知网";
var domain = 'https://navi.cnki.net';
var myEncoding = "utf-8";
var seedURL = 'https://navi.cnki.net/knavi/journals/index';
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2023-1-15 12:09:55
三、定义元素的读取方式
注意到需要爬取网页的标题、日期、内容等等,我们可以用如下的代码实现:
接下来需要准确定位到文章,这里知网链接都有一个特点:链接里都带有article关键字,感兴趣的读者朋友们可以在知网的源代码中寻找规律。
所以url_reg变量定义就很简单了:寻找带有article关键字的链接即可。

最后,写出正则表达式,用来搜索日期。

var seedURL_format = "$('a')";
var keywords_format = " $('meta[name=\"keywords\"]').eq(0).attr(\"content\")";
var title_format = "$('title').text()";
var date_format = "$('.post_info').text()";
var content_format = "$('.post_content').text()";
var desc_format = " $('meta[name=\"description\"]').eq(0).attr(\"content\")";
var source_format = "$('.post_info').text()";
var url_reg = /article/;

var regExp = /(\d{4}(\-|\/|\.)\d{1,2}\2\d{1,2})/
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2023-1-15 12:30:53
四、与数据库建立连接,并且操作数据库

var mysql = require("mysql");
var pool = mysql.createPool({
    host: '127.0.0.1',
    user: 'root',
    password: 'root',
    database: 'crawl'
});
var query = function(sql, sqlparam, callback) {
    pool.getConnection(function(err, conn) {
        if (err) {
            callback(err, null, null);
        } else {
            conn.query(sql, sqlparam, function(qerr, vals, fields) {
                conn.release(); //释放连接
                callback(qerr, vals, fields); //事件驱动回调
            });
        }
    });
};
var query_noparam = function(sql, callback) {
    pool.getConnection(function(err, conn) {
        if (err) {
            callback(err, null, null);
        } else {
            conn.query(sql, function(qerr, vals, fields) {
                conn.release(); //释放连接
                callback(qerr, vals, fields); //事件驱动回调
            });
        }
    });
};
exports.query = query;
exports.query_noparam = query_noparam;
复制这段代码到文件Mysql.js文件夹下,即完成建立数据库
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群