Я создал скрипт в node
, используя request
и cheerio
для получения разных titles
и links
разных сообщений с его целевой страницы, а затем передал эти titles
и links
в другую функцию, чтобы я мог извлечь title
из этих links
со своей внутренней страницы вдоль со ссылкой на профиль пользователя, создавшего этот пост, который я определил как proLink
.
How I can print those
titles
,links
andproLink
from within another function using callback?
Я написал до сих пор:
var request = require('request');
var cheerio = require('cheerio');
const url = 'https://stackoverflow.com/questions/tagged/web-scraping';
function getposts(callback){
request(url, function (error,response, html) {
if (!error && response.statusCode == 200){
var $ = cheerio.load(html);
$('.summary .question-hyperlink').each(function(){
var items = $(this).text();
var links = $(this).attr("href");
return callback(items,links);
});
}
});
}
getposts((item,link,callback)=>{
request(link, function (error,response, html) {
if (!error && response.statusCode == 200){
var $ = cheerio.load(html);
var proLink = $('.user-details > a').eq(0).attr("href");
return callback(item,link,proLink);
}
});
});
Еще раз: я хочу напечатать три item
,link
,proLink
из них в другой функции, используя обратный вызов.
Может быть, вы можете попробовать это:
var request = require('request');
var cheerio = require('cheerio');
const url = 'https://stackoverflow.com/questions/tagged/web-scraping';
function getposts(callback) {
request(url, function(error, response, html) {
if (!error && response.statusCode == 200) {
var $ = cheerio.load(html);
$('.summary .question-hyperlink').each(function() {
var items = $(this).text();
var links = $(this).attr('href');
return callback(items, links);
});
}
});
}
function fetch(callback) {
getposts((item, link) => {
request(`https://stackoverflow.com${link}`, function(
error,
response,
html
) {
if (error) {
console.info(link, error.message);
return;
}
if (!error && response.statusCode == 200) {
var $ = cheerio.load(html);
var proLink = $('.user-details > a')
.eq(0)
.attr('href');
return callback(item, link, proLink);
}
});
});
}
fetch((item, link, proLink) => console.info({ item, link, proLink }));