You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
770 B
JavaScript
29 lines
770 B
JavaScript
4 years ago
|
"use strict";
|
||
|
|
||
|
const cheerio = require("cheerio");
|
||
|
const url = require("url");
|
||
|
|
||
|
const assureResponse = require("../../shared/assure-response");
|
||
|
|
||
|
module.exports = function findCategories({ session }) {
|
||
|
return async function ({ createItem }) {
|
||
|
let response = await session.get("https://www.st.com/content/st_com/en.html");
|
||
|
assureResponse(response);
|
||
|
|
||
|
let $ = cheerio.load(response.body);
|
||
|
|
||
|
let links = $("#Top_Menu_Products :is(a.st-nav__blockmenu-title, a.st-nav__blockmenu-link)")
|
||
|
.toArray()
|
||
|
.map((element) => $(element).attr("href"))
|
||
|
.map((relativeURL) => url.resolve("https://www.st.com/", relativeURL));
|
||
|
|
||
|
for (let link of links) {
|
||
|
createItem({
|
||
|
id: `st:category:${link}`,
|
||
|
tags: [ "st:category" ],
|
||
|
data: { url: link }
|
||
|
});
|
||
|
}
|
||
|
};
|
||
|
};
|