Сканирование через Интернет с использованием узла js - PullRequest
0 голосов
/ 30 августа 2018

Я соскребаю medium.com. Я пытаюсь отобразить все ссылки, представленные на сайте.

var url="https://medium.com/";

    request(url,function(error,response,html){

        if(!error && response.statusCode==200){

            var $=cheerio.load(html);

            var json={content:"",link:""};
            var jsonObjects=[];

            var links=$('a');
            //console.log(links);
            $(links).each(function(i,link){
                json.content=$(link).text();
                json.link=$(link).attr('href');
                jsonObjects.push(json);
            });


        }

        fs.writeFile('Links.json',JSON.stringify(jsonObjects,null,4),function(err){
            if(!err){
                res.send("File written successfully!!!!")
            }
        })

    })

Когда я использую этот код, снова появляется только одна ссылка снова и снова в файле Links.json.

[ { «контент»: «О», "ссылка": "https://about.medium.com" }, { «контент»: «О», "ссылка": "https://about.medium.com" }, { «контент»: «О», "ссылка": "https://about.medium.com" }, { «контент»: «О», "ссылка": "https://about.medium.com" }, { «контент»: «О», "ссылка": "https://about.medium.com" }, { «контент»: «О», "ссылка": "https://about.medium.com" }, { «контент»: «О», "ссылка": "https://about.medium.com" }, {

Я попробовал все, но не получил даже ссылки на главной странице medium.com Пожалуйста, помогите.

1 Ответ

0 голосов
/ 30 августа 2018

Это потому, что вы продолжаете редактировать один и тот же объект и снова и снова помещать его в массив.

var json={content:"",link:""};

должно быть внутри вашей each петли.

var url="https://medium.com/";

    request(url,function(error,response,html){

        if(!error && response.statusCode==200){

            var $=cheerio.load(html);
            var jsonObjects=[];

            var links=$('a');
            //console.log(links);
            $(links).each(function(i,link){
                var content = $(link).text();
                var link = $(link).attr('href');
                jsonObjects.push({ content: content, link: link });
            });


        }

        fs.writeFile('Links.json',JSON.stringify(jsonObjects,null,4),function(err){
            if(!err){
                res.send("File written successfully!!!!")
            }
        })

    })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...