【发布时间】:2020-06-28 17:33:10
【问题描述】:
好的,所以基本上我有一个网络爬虫,我将网络爬虫信息保存到一个名为“db.json”的本地数据库中
我想知道如何解决实现它并在视图中显示信息。我习惯于像 PSQL 一样工作,所以这样做对我来说是不同的。我很感激帮助,我也计划设置类似 cron 作业和类似的东西,但我稍后会这样做。
当前的部分作业映射出 PSQL 数据库并立即获取示例信息,因此将对其进行更改..
我也很难获得更多的职位头衔.. 有组织的 json 但例如
job: jobs.title
我认为会得到职位头衔没有得到任何东西,是因为我在函数之外拥有它吗?
代码如下:
信息到数据库的推送位于 searchJobs 函数的底部。
webScraper.js:
debug = require("../models/conn");
const puppeteer = require("puppeteer");
const axios = require("axios");
const cheerio = require("cheerio");
const db = require("../public/scripts/db")
async function searchJobs(i) {
const url = await axios
.get("https://indeed.com/jobs?q=Web+Developer&l=Atlanta&fromage=last")
.then(response => response)
.then(res => {
const jobs = [];
const $ = cheerio.load(res.data);
$(".result").each((index, element) => {
const title = $(element)
.children(".title")
.text();
const linkToJob = $(element)
.children(".title")
.children("a")
.attr("href");
const body = $(element)
.children(".summary")
.text();
jobs[index] = { title, linkToJob, body };
});
console.log(jobs);
// Push jobs to JSON DB
db.get('jobs').push({
job: jobs
}).write();
return jobs;
});
return url;
}
这是将信息写入 json 文件的脚本。
db.js:
low = require("lowdb"),
FileSync = require("lowdb/adapters/FileSync");
const adapter = new FileSync('db.json')
const db = low(adapter)
db.defaults({ jobs: [], body: []})
.write()
module.exports = db;
module.exports = searchJobs;
这是工作路线
jobs.js:
const express = require("express"),
router = express.Router();
jobModel = require("../models/jobModel");
// gets job page
router.get("/", async function(req, res) {
const jobData = await jobModel.getAllJobs();
console.log(jobData);
res.render("template", {
locals: {
title: "jobs",
jobData: jobData
},
partials: {
partial: "partial-jobs"
}
});
});
module.exports = router;
【问题讨论】:
-
还可以查看X-Ray 进行抓取
-
@Codebling 哇哦,看起来棒极了。我一定要去看看。
标签: javascript node.js json express