Невозможно получить элемент HTML с узла JS + cheerio

1

Я написал этот код, чтобы захватить элемент с страницы VK. Но он возвращает null. Можете ли вы мне помочь, если мне нужно захватить имя и фотографию профиля? Почему я не могу использовать это?

const request = require('request');
const cheerio = require('cheerio');

request('https://vk.com/durov', (err, res, html) => {
  if (!err && res.statusCode == 200) {
    const $ = cheerio.load(html);

    const nameElement = $('.page_block');

    console.log(nameElement.html());
  }
});
  • 0
    Так как node.js находится на стороне сервера, вы вообще не сможете получить доступ к DOM. Вы можете получить его на стороне клиента js и передать его как тело сообщения на слой узла и выполнять функции.
  • 0
    Например, я видел много рабочих примеров - youtube.com/watch?v=LoziivfAAjE
Теги:
web-scraping
parsing
cheerio

1 ответ

2
Лучший ответ

Кажется, что этот сайт проверяет некоторые шаблоны пользовательских агентов. Например, следующие работы:

const request = require('request');
const cheerio = require('cheerio');

request({
    url: 'https://vk.com/durov',
    headers: {
        'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0.1'
    }
}, (err, res, html) => {
    if (!err && res.statusCode === 200) {
        var $ = cheerio.load(html);
        console.log($('.page_block').html());
    }
});
  • 0
    Кроме того, если вы (nptsh) запишете $('.page_block').html() вместо $('. page_block').html() вы найдете html, который искали ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню