скрап не показывает арабские буквы - PullRequest
0 голосов
/ 30 января 2019

Я провел целый день в поисках способа отображения арабских букв с scrapy, и у меня ничего не получалось!Я очищаю арабский веб-сайт, но не получаю правильный формат арабского языка.

Вот что я на самом деле получаю, когда сохраняю результаты в CSV-файле:

"بطل ليÙربول القديم" يرد على أنصار "الريدز"

вот моя функция:

def parse_details(self, response):
    vars = ArticlesItem()
    vars["title"] = response.css("h1.sna_content_heading::text").extract_first().strip()
    vars["article_summary"] = response.css("span.article-summary").extract_first().strip()
    vars["article_content"] = [i.strip() for i in response.css("div.article-body p::text").extract()]
    vars["tags"] = [i.strip() for i in response.css("div.article-tags h2.tags::text").extract()]
    yield vars

я пытался добавить encode("utf-8"), но я все еще не получаю правильный формат

vars["title"] = ...extract_first().strip().encode("utf-8")

я получаю что-то вроде этого:

b'\xd8\xa8\xd8\xb1\xd9\x82\xd9\x85 "\xd9\x85\xd8\xb0\xd9\x87'
      b'\xd9\x84".. \xd8\xa8\xd9\x86\xd8\xb2\xd9\x8a\xd9\x85\xd8\xa9 \xd9'
      b'\x8a\xd8\xaa\xd9\x81\xd9\x88\xd9\x82 \xd8\xb9\xd9\x84\xd9\x89'
      b' \xd9\x85\xd9\x8a\xd8\xb3\xd9\x8a \xd9\x88\xd8\xb1\xd9\x88'
      b'\xd9\x86\xd8\xa7\xd9\x84\xd8\xaf\xd9\x88 \xd9\x88\xd8\xb5\xd9'
      b'\x84\xd8\xa7\xd8\xad'

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Если я возьму данные, которые вы сообщаете в своем вопросе, и назначу их переменной, например:

>>> a = (b'\xd8\xa8\xd8\xb1\xd9\x82\xd9\x85 "\xd9\x85\xd8\xb0\xd9\x87'
      b'\xd9\x84".. \xd8\xa8\xd9\x86\xd8\xb2\xd9\x8a\xd9\x85\xd8\xa9 \xd9'
      b'\x8a\xd8\xaa\xd9\x81\xd9\x88\xd9\x82 \xd8\xb9\xd9\x84\xd9\x89'
      b' \xd9\x85\xd9\x8a\xd8\xb3\xd9\x8a \xd9\x88\xd8\xb1\xd9\x88'
      b'\xd9\x86\xd8\xa7\xd9\x84\xd8\xaf\xd9\x88 \xd9\x88\xd8\xb5\xd9'
      b'\x84\xd8\xa7\xd8\xad')

, а затем я декодирую эти байты в (разумном) предположении, что они являются UTF-8:

>>> a.decode()
'برقم "مذهل".. بنزيمة يتفوق على ميسي ورونالدو وصلاح'

мне кажется, что вы получаете то, что ожидаете, но не совсем так, как ожидаете.

0 голосов
/ 04 февраля 2019

поскольку @gallaecio хотел, чтобы я написал ответ на свой вопрос

, вот что я сделал:

1 - откройте пустой лист Excel

2 - идик данным

3 - выберите Из текста / csv

4 - в качестве источника файла мне пришлось изменить его с 1252 для Западной Европы (Windows) на 65001 Unicode (UTF-8), теперь яможете читать арабский текст!

5 - Загрузить!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...