H
H
hbrmdc2015-11-14 08:22:43
JavaScript
hbrmdc, 2015-11-14 08:22:43

How to fix encoding in x-ray (NodeJS scraping library)?

This script works fine on my NodeJS server, but sometimes it returns a result with incorrect Cyrillic character encoding.
Script:

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 [email protected]',
    contentImage_1: '.content [email protected]',
    contentImage_2: '.image [email protected]'
  })
(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
        ]
    }

Incorrect answer:
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 ] }

Tell me how to fix this?
Thank you for your time!

Answer the question

In order to leave comments, you need to log in

1 answer(s)
P
pomeo, 2015-11-16
@hbrmdc

But nothing
We look at https://github.com/lapwinglabs/x-ray/blob/master/i... we see what requests are made through x-ray-crawler
We look at https://github.com/lapwinglabs/x-ray -crawler/blob/... and we see the well-known superagent https://github.com/visionmedia/superagent there , which does not know how to work with encodings, although it does not need to.
There is a kind person who wrote the module https://github.com/magicdawn/superagent-charset
Your task is not difficult, add the ability to encode to x-ray-crawler, you can embed superagent-charset. The authors can be seen that they are active, the pull request will pass quickly.
And basically x-ray add options forwarding before calling x-ray-crawler.
When I had already finished writing, I looked at the pull requests from x-ray. There already hangs what you need
https://github.com/lapwinglabs/x-ray/pull/13
https://github.com/lapwinglabs/x-ray/issues/9
Coincides with what I wrote above

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question