使用 Node.js 进行网络爬虫
Web Crawling Using Node js
我正在抓取medium.com。我正在尝试显示网站上的所有 link。
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!!!!")
}
})
})
当我使用此代码时,只有一个 link 再次出现在 Links.json 文件中。
[
{
"content": "About",
"link": "https://about.medium.com"
},
{
"content": "About",
"link": "https://about.medium.com"
},
{
"content": "About",
"link": "https://about.medium.com"
},
{
"content": "About",
"link": "https://about.medium.com"
},
{
"content": "About",
"link": "https://about.medium.com"
},
{
"content": "About",
"link": "https://about.medium.com"
},
{
"content": "About",
"link": "https://about.medium.com"
},
{
我已经尝试了所有方法,但连 medium.com 主页的 link 都没有
请帮忙
这是因为你一直在编辑同一个对象,一次又一次地把它推入数组。
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!!!!")
}
})
})
我正在抓取medium.com。我正在尝试显示网站上的所有 link。
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!!!!")
}
})
})
当我使用此代码时,只有一个 link 再次出现在 Links.json 文件中。
[ { "content": "About", "link": "https://about.medium.com" }, { "content": "About", "link": "https://about.medium.com" }, { "content": "About", "link": "https://about.medium.com" }, { "content": "About", "link": "https://about.medium.com" }, { "content": "About", "link": "https://about.medium.com" }, { "content": "About", "link": "https://about.medium.com" }, { "content": "About", "link": "https://about.medium.com" }, {
我已经尝试了所有方法,但连 medium.com 主页的 link 都没有 请帮忙
这是因为你一直在编辑同一个对象,一次又一次地把它推入数组。
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!!!!")
}
})
})