Соскоб в сети с несколькими URL - PullRequest
0 голосов
/ 27 июня 2019

мне нужно сделать несколько операций с несколькими URL-адресами для моего бота-разногласия (мне нужно получить первый href внутри элемента h3 из нескольких URL-адресов и отправить его вместе с ботом), мне удалось заставить его работать только для один URL

const uri='some url'
const uri2='some url2'
const Discord = require('discord.js')
const client = new Discord.Client()
const cheerio = require('cheerio');
const rp = require('request-promise');
var a_href 
//repeat this for every 2 hours
setInterval(async function run() {
    const options = {
    uri,
    resolveWithFullResponse: true,
    transform: (body) => {
    return cheerio.load(body);
}}
try{
    const $ = await rp(options);
    //get the first href from a h3 element
    $('.table h3 > a').attr('href')

    $(".table").each(function(){
    a_href = $(this).find('h3 > a').attr('href');

});

    }catch(e){
     console.log(e);
}}, 7100000);

client.on('ready', () => {
    var generalChannel = 
    client.channels.get("593113450398613537") 
    setInterval (function () {
    generalChannel.send(a_href)  
  }, 7200000); 
})

Ответы [ 2 ]

1 голос
/ 27 июня 2019

Нет необходимости использовать два интервала.Переберите свои URL.

const urls = ['some url','some url2']
const Discord = require('discord.js')
const client = new Discord.Client()
const cheerio = require('cheerio');
const rp = require('request-promise');

client.on('ready', () => {
    let generalChannel = client.channels.get("593113450398613537")

    //repeat this for every 2 hours
    setInterval (function () {
        for(let url of urls) {
            let a_href = ''

            try {
                const $ = await rp({
                    url,
                    resolveWithFullResponse: true,
                    transform: (body) => cheerio.load(body)
                });

                //get the first href from a h3 element
                a_href = $('.table h3 > a').attr('href')
            } catch(e) {
                console.log(e);
            }

            generalChannel.send(a_href)
        }
    }, 7200000);
})
0 голосов
/ 27 июня 2019

Используйте цикл for или итератор для просмотра массива URL. Похоже, вы на самом деле переопределяете свою константу URI.

Возможно, вам повезет, передав ваш URL в массив так:


const urls = ['some_url1', 'some_url2']

А затем используйте цикл for или итератор для просмотра массива.

...