contract-scraper
Version:
A customisable data scraper for the web based on JSON contracts
41 lines (40 loc) • 1.39 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const axios_1 = __importDefault(require("axios"));
const random_useragent_1 = __importDefault(require("random-useragent"));
const encoding_1 = require("../tools/encoding");
class RequestFetcher {
constructor(url) {
this.url = url;
}
getPage() {
return this.getPageResponse().then((response) => {
const { headers, data: body } = response;
const encoding = (0, encoding_1.guessEncoding)(headers['Content-Type'], body);
const page = {
encoding,
contents: (0, encoding_1.encodePageContents)(encoding, body),
url: this.url,
};
return page;
});
}
getRequestLibrary() {
return axios_1.default;
}
getPageResponse() {
const userAgent = random_useragent_1.default.getRandom();
return this.getRequestLibrary().get(this.url, {
headers: {
'Content-Type': 'text/html; charset=utf-8',
Accept: 'text/html',
'Accept-Language': 'fr-FR',
'User-Agent': userAgent,
},
});
}
}
exports.default = RequestFetcher;