@hbrmdc

Как поправить кодировку в x-ray (NodeJS scraping library)?

Вот этот скрипт работает отлично на моем NodeJS сервере, но иногда он возвращает результат с неверной кодировкой кирилических символов.

Скрипт:
x(url, {
    name: 'title',
    ogDescription: 'meta[property="og:description"]@content',
    metaDescription: 'meta[name="description"]@content',
        ogImage: 'meta[property="og:image"]@content',
        twitterImage: 'meta[name="name="twitter:image:src""]@content',
    metaImage: 'meta[name="image"]@content',
    headImage: 'head img@src',
    contentImage_1: '.content img@src',
    contentImage_2: '.image img@src'
  })
(function (err, obj) {
    var firstData = {
        name: [
            obj.name
        ],
        description: [
            obj.metaDescription, 
            obj.ogDescription,
        ],
        image: [
            obj.ogImage,
            obj.twitterImage,
            obj.metaImage,
            obj.headImage,
            obj.contentImage_1,
            obj.contentImage_2
        ]
    }


Некорректный ответ:
query { url: 'http://kommersant.ru/doc/2836303' }
firstData { name: [ '�-������ - ������� �����' ],
  description:
   [ '������� ����� - ����� ������ � � ����� ����� ��������������� ������������ - ������ "������" - ������������ ��� �����������. ������������� �������� ����������� "��������� ���������-�������������� �������� ���������� ��������� �� 2030�����". Ƞ��� �� ����������: ������� ��������� �� ����������� (����������� ���������������� � ������������— �� �������), ����� � ������������ ���������� ����� ������������ ������������� ��������, ����� "Π�������������� ������������" �� ��������... ��� � ������ ����� ������ ����� ����� ������ ���������— ������� � ��� �������������, � ��� ���������. "������" ���� ��������� ���������� ����� ����������� ��������',
     '������������� �������� ����������� "��������� ���������-�������������� �������� ���������� ��������� �� 2030�����". Ƞ��� �� ����������: ������� ��������� �� ����������� (����������� ���������������� � ������������— �� �������), ����� � ������������ ���������� ����� ������������ ������������� ��������, ����� "Π�������������� ������������" �� ��������... ��� � ������ ����� ������ ����� ����� ������ ���������— ������� � ��� �������������, � ��� ���������. "������" ���� ��������� ���������� ����� ����������� ��������' ],
  image:
   [ 'http://im0.kommersant.ru/Issues.photo/OGONIOK/2015/044/KMO_068835_00105_1_t218_212749.jpg',
     undefined,
     undefined,
     undefined,
     undefined,
     undefined ] }


Подскажите, как это поправить?
Благодарю за уделенное время!
  • Вопрос задан
  • 155 просмотров
Решения вопроса 1
pomeo
@pomeo
А никак
Смотрим https://github.com/lapwinglabs/x-ray/blob/master/i... видим, что запросы делают через x-ray-crawler
Смотрим https://github.com/lapwinglabs/x-ray-crawler/blob/... и видим там известный superagent https://github.com/visionmedia/superagent, который не умеет с кодировками работать, хотя ему и не надо.
Есть добрый человек написавший модуль https://github.com/magicdawn/superagent-charset

Ваша задача не сложная, добавить в x-ray-crawler возможность кодировки, можно superagent-charset встроить. Авторы видно, что активны, pull request быстро пройдёт.
А в основном x-ray добавить проброс опций до вызова x-ray-crawler.

Когда уже дописал, посмотрел pull requests у x-ray. Там уже висит то что вам надо
https://github.com/lapwinglabs/x-ray/pull/13
https://github.com/lapwinglabs/x-ray/issues/9
Совпадает с тем, что я писал выше
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы