Как использовать Google Translate Python API для перевода HTML - PullRequest
0 голосов
/ 10 сентября 2018

API Google Translate Python имеет ключевое слово format_, которое может быть установлено в «html»: https://googlecloudplatform.github.io/google-cloud-python/latest/translate/client.html

У меня есть HTML-код для новостной статьи, которая была получена с помощью пакета magazine3k: https://github.com/codelucas/newspaper/

HTML - это двоичная строка, которая начинается следующим образом:

b'<!DOCTYPE html>\r\n<html xmlns="http://www.w3.org/1999/xhtml" lang="ar" dir="rtl" xmlns:fb="http://www.facebook.com/2008/fbml" xmlns:og="http://opengraphprotocol.org/schema/">\r\n<head>\r\n\t<!-- Meta, title, CSS, favicons, etc. -->\r\n\t<meta charset="UTF-8" />\r\n\t<meta http-equiv="Conten

Я пытаюсь перевести этот HTML (в основном на арабском) на английский, используя этот вызов Google Translate Python API:

html_english=translate_client.translate(html_arabic, target_language='en', format_='html')

Это приводит к следующей ошибке (объект байтов типа не поддерживает сериализацию в формате JSON). Что я делаю не так?

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)

~\AppData\Local\conda\conda\envs\xview\lib\json\encoder.py in default(self, o)
    178         """
    179         raise TypeError("Object of type '%s' is not JSON serializable" %
--> 180                         o.__class__.__name__)
    181 
    182     def encode(self, o):

TypeError: Object of type 'bytes' is not JSON serializable

1 Ответ

0 голосов
/ 10 сентября 2018

И ответ (благодаря @abarnert и Python 3: не поддерживает сериализацию в формате JSON ) для декодирования двоичной строки из magazine3k в UTF-8, которую предпочитает JSON, и Google Translate использует для перемещения полезной нагрузки, добавив .decode ("utf-8") :

html_english=translate_client.translate(
      html_arabic.decode("utf-8"), 
      target_language='en', format_='html')
...