forked from tanner/qotnews
reader server
This commit is contained in:
41
readerserver/scraper/simple.js
Normal file
41
readerserver/scraper/simple.js
Normal file
@@ -0,0 +1,41 @@
|
||||
const request = require('request');
|
||||
const JSDOM = require('jsdom').JSDOM;
|
||||
const { Readability } = require('readability');
|
||||
|
||||
const { headers } = require('../constants');
|
||||
|
||||
const options = url => ({
|
||||
url,
|
||||
headers,
|
||||
});
|
||||
|
||||
const extract = (url, body) => {
|
||||
const doc = new JSDOM(body, { url: url });
|
||||
const reader = new Readability(doc.window.document);
|
||||
return reader.parse();
|
||||
};
|
||||
|
||||
|
||||
module.exports.scrape = (req, res) => request(options(req.body.url), (error, response, body) => {
|
||||
if (error || response.statusCode != 200) {
|
||||
console.log('Response error:', error ? error.toString() : response.statusCode);
|
||||
return res.sendStatus(response ? response.statusCode : 404);
|
||||
}
|
||||
const article = extract(req.body.url, body);
|
||||
if (article && article.content) {
|
||||
return res.send(article.content);
|
||||
}
|
||||
return res.sendStatus(404);
|
||||
});
|
||||
|
||||
module.exports.details = (req, res) => request(options(req.body.url), (error, response, body) => {
|
||||
if (error || response.statusCode != 200) {
|
||||
console.log('Response error:', error ? error.toString() : response.statusCode);
|
||||
return res.sendStatus(response ? response.statusCode : 404);
|
||||
}
|
||||
const article = extract(req.body.url, body);
|
||||
if (article) {
|
||||
return res.send(article);
|
||||
}
|
||||
return res.sendStatus(404);
|
||||
});
|
Reference in New Issue
Block a user