// index.js
import needle from "needle";
import Cheerio from "cheerio";
import { Site, Link } from "./db.js";
async function get_new_links(site) {
// Тут мы получаем все ссылки
async function get_links(url) {
let links = [];
let response = await needle("get", url);
let $ = Cheerio.load(response.body);
let a = $("a");
a.each((i, element) => {
links.push(new URL($(element).attr("href"), url).href);
});
return links;
}
let links = await get_links(site.link);
// Тут мы создаём записи с ссылками, которые получили, если они не были созданы
links.forEach(async link => {
try {
await Link.findOrCreate({
where: {
link: link,
SiteId: site.id
}
});
} catch {
}
});
}
(async () => {
const sites = await Site.findAll();
sites.forEach(async site => {
await get_new_links(site);
});
})();
Скрипт почему-то создаёт только 1 запись с ссылкой, хотя ссылок получает гораздо больше. Ссылки, которые он получает:
[
'http://www.ettu.ru/',
'http://www.ettu.ru/about/',
'http://www.ettu.ru/news/',
'http://www.ettu.ru/pass/',
'http://www.ettu.ru/contacts/',
'http://maps.yandex.ru/?ll=60.597223%2C56.837992&spn=0.322723%2C0.162022&z=12&l=map%2Ctrf%2Ctrfe&trfm=cur',
'http://www.ettu.ru/accessory/?accessory=on',
'http://www.ettu.ru/news/',
'http://www.ettu.ru/news/?rss',
'http://www.ettu.ru/',
'http://www.ettu.ru/news/',
'http://www.ettu.ru/news/group/routeschange/9',
'http://www.ettu.ru/news/group/newsttu/10',
'http://www.ettu.ru/news/group/get_news/11',
'http://www.ettu.ru/transport_onlayn/',
'http://www.ettu.ru/gde_tramvay/',
'http://www.ettu.ru/gde_trolleybus/',
'http://www.ettu.ru/news/2023/01/16/758/',
'http://www.ettu.ru/news/2023/01/16/758/',
'http://www.ettu.ru/sitemap/',
'https://yandex.ru/maps/-/CCUBN8VbLA',
'http://www.ettu.ru/news/#',
'http://www.ample.ru/'
]