Инструменты для захвата и конвертирования Интернета
Интернет-сообщество GrabzIt

Выдает ошибку, когда я запускаю демо-версию с помощью Python

Задавайте вопросы, касающиеся GrabzIt Web Scraper Tool. Например, как использовать веб-скребок и API для извлечения данных из веб-страниц, изображений или документов PDF.

ошибка:

Traceback (последний последний вызов):

  Файл «GrabzItClient.py», строка 6, в

    схватить это.SaveTo("документы/результат.docx")

  Файл «C:\Program Files\Python36\lib\site-packages\GrabzIt\GrabzItClient.py», строка 235, в SaveTo

    идентификатор = сам.Save()

  Файл «C:\Program Files\Python36\lib\site-packages\GrabzIt\GrabzItClient.py», строка 209, в Save

    obj = self._take(sig, callBackURL)

  Файл «C:\Program Files\Python36\lib\site-packages\GrabzIt\GrabzItClient.py», строка 223, в _take

    return self.HTTPPost(self.request.url, self.request.options._getParameters(self.applicationKey, sig, callBackURL, 'html', quote(self.request.data)))

  Файл «C:\Program Files\Python36\lib\site-packages\GrabzIt\GrabzItClient.py», строка 629, в HTTPPost

    h.endheaders()

  Файл «C:\Program Files\Python36\lib\http\client.py», строка 1234, в конечных заголовках.

    self._send_output(message_body, encode_chunked=encode_chunked)

  Файл «C:\Program Files\Python36\lib\http\client.py», строка 1026, в _send_output

    self.send (MSG)

  Файл «C:\Program Files\Python36\lib\http\client.py», строка 964, в отправке

    self.connect ()

  Файл "C:\Program Files\Python36\lib\http\client.py", строка 936, в соединении

    (self.host,self.port), self.timeout, self.source_address)

  Файл «C:\Program Files\Python36\lib\socket.py», строка 704, в create_connection

    для res в getaddrinfo (хост, порт, 0, SOCK_STREAM):

  Файл «C:\Program Files\Python36\lib\socket.py», строка 743, в getaddrinfo

    для разрешения в _socket.getaddrinfo(хост, порт, семейство, тип, прототип, флаги):

socket.gaierror: [Errno 11001] сбой getaddrinfo

 

источник: (Я установил GrabzIt и получил КЛЮЧ ПРИЛОЖЕНИЯ и СЕКРЕТ ПРИЛОЖЕНИЯ)

из GrabzIt импортировать GrabzItClient

 

grabzIt = GrabzItClient.GrabzItClient(КЛЮЧ ПРИЛОЖЕНИЯ, СЕКРЕТ ПРИЛОЖЕНИЯ)

схватить это.HTMLToDOCX(« Привет, мир! ") 

схватить это.SaveTo("документы/результат.docx") 

 

не могли бы вы сказать мне, что мне делать?

Вопрос задан анонимом, 21 августа 2018 г.

Добро пожаловать в сообщество!

Обычно socket.gaierror: [Errno 11001] сбой getaddrinfo возникает, когда код вызывается из-за брандмауэра или прокси-сервера. Убедитесь, что приложение имеет доступ к порту 80.

Ответ от службы поддержки GrabzIt 21 августа 2018 г.

Спасибо за ответ.

Да, это проблема прокси. Он работает нормально, когда я меняю другой компьютер, на котором нет прокси.

Как это может работать с прокси?

Ответ анонима от 21 августа 2018 г.

Это будет новая функция. Мы ищем возможность изменить клиент Python, чтобы включить использование прокси-серверов.

Если это возможно, мы свяжемся с вами с исправлением. Если хотите, вы можете попробовать сами, поскольку все наши клиенты имеют открытый исходный код: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py

Ответ от службы поддержки GrabzIt 21 августа 2018 г.

Мы добавили новую функцию. Просто скачайте файл GrabzItClient.py и замените свою копию здесь: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py.

Затем вы можете установить URL-адрес прокси-сервера вашего прокси-сервера, используя новый метод SetLocalProxy, например:

GrabzIt.SetLocalProxy("http://123.123.123.123:21231")

Пожалуйста, сообщите нам, как идут дела, и мы скоро выпустим новый релиз!

Ответ от службы поддержки GrabzIt 21 августа 2018 г.

Спасибо за ответ.

Я заменил GrabzItClient.py и изменил мой источник:

 

 

grabzIt = GrabzItClient.GrabzItClient(КЛЮЧ ПРИЛОЖЕНИЯ, СЕКРЕТ ПРИЛОЖЕНИЯ)

GrabzIt.SetLocalProxy("http://xxx@jp.xxxxx.com:yyyyyyy@zzz.proxy.zzz.zzzzzzz.com:8080")

схватить это.HTMLToDOCX(« Привет, мир! ") 

схватить это.SaveTo("документы/результат.docx") 

 

Пользователь:xxx@jp.xxxxxx.com

Пароль:YYYYYYY

Прокси сервер:zzz.proxy.zzz.zzzzzz.com

порт:8080

 

сообщение об ошибке:

Traceback (последний последний вызов):
  Файл «GrabzIt_test.py», строка 54, в
    схватить это.SaveTo("результат.docx")
  Файл «C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py», строка 487, в SaveTo
    идентификатор = сам.Save()
  Файл «C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py», строка 435, в Save
    obj = self._take(sig, callBackURL)
  Файл «C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py», строка 463, в _take
    return self.HTTPPost(self.request.url, self.request.options._getParameters(self.applicationKey, sig, callBackURL, 'html', quote(self.request.data)))
  Файл «C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py», строка 1307, в HTTPPost
    headers['Proxy-Authorization'] = 'Basic' + base64.b64encode(auth)
  Файл «C:\Program Files\Python36\lib\base64.py», строка 58, в b64encode
    закодировано = binascii.b2a_base64(s, новая строка=False)
TypeError: требуется байтовый объект, а не 'str'

 

то же сообщение об ошибке, даже если я изменил Установитьлокальный прокси от "http://xxx@jp.xxxxx.com:yyyyyyy@zzz.proxy.zzz.zzzzzzz.com:8080"В "http://xxx%40jp.xxxxx.com:yyyyyyy@zzz.proxy.zzz.zzzzzzz.com:8080"

 

Ответ анонима от 22 августа 2018 г.

извините, возможно я установил не тот прокси.

Я изменил прокси-сервер на «http://the_other_proxy_server:port», и сообщение об ошибке стало следующим:

Traceback (последний последний вызов):
  Файл «GrabzIt_test.py», строка 54, в
    схватить это.SaveTo("результат.docx")
  Файл «C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py», строка 487, в SaveTo
    идентификатор = сам.Save()
  Файл «C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py», строка 435, в Save
    obj = self._take(sig, callBackURL)
  Файл «C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py», строка 463, в _take
    return self.HTTPPost(self.request.url, self.request.options._getParameters(self.applicationKey, sig, callBackURL, 'html', quote(self.request.data)))
  Файл «C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py», строка 1327, в HTTPPost
    h.endheaders()
  Файл «C:\Program Files\Python36\lib\http\client.py», строка 1234, в конечных заголовках.
    self._send_output(message_body, encode_chunked=encode_chunked)
  Файл «C:\Program Files\Python36\lib\http\client.py», строка 1026, в _send_output
    self.send (MSG)
  Файл «C:\Program Files\Python36\lib\http\client.py», строка 964, в отправке
    self.connect ()
  Файл "C:\Program Files\Python36\lib\http\client.py", строка 940, в соединении
    self._tunnel()
  Файл «C:\Program Files\Python36\lib\http\client.py», строка 919, в _tunnel
    сообщение.полоса()))
OSError: Ошибка туннельного подключения: 407 Требуется проверка подлинности прокси-сервера

Ответ анонима от 22 августа 2018 г.

Вам необходимо указать имя пользователя и пароль следующим образом: http://username:password@example.com:12335

Ответ от службы поддержки GrabzIt 22 августа 2018 г.

Да, я указал свое имя пользователя и пароль (вопрос в среду, 22 августа 2018 г., 09:34:43), например:

http://username:password@example.com:12335

имя пользователя — это адрес электронной почты (xxx@jp.xxxxx.com), поэтому я изменил его на xxx%40jp.xxxxx.com.

но это то же сообщение об ошибке: TypeError: требуется байтовый объект, а не 'str'

Ответ анонима от 22 августа 2018 г.

Извините, я пропустил ваш предыдущий ответ. Я думаю, что это проблема Python 3, и я выпустил исправление, которое должно устранить эту ошибку. Пожалуйста, не могли бы вы еще раз обновить GrabzItClient.py по адресу: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py

Ответ от службы поддержки GrabzIt 22 августа 2018 г.

Я заменил файл Python и нашел новое сообщение об ошибке:

Traceback (последний последний вызов):

  Файл «GrabzIt_test.py», строка 54, в

    схватить это.SaveTo("результат.docx")

  Файл «C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py», строка 244, в SaveTo

    идентификатор = сам.Save()

  Файл «C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py», строка 218, в Save

    obj = self._take(sig, callBackURL)

  Файл «C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py», строка 232, в _take

    return self.HTTPPost(self.request.url, self.request.options._getParameters(self.applicationKey, sig, callBackURL, 'html', quote(self.request.data)))

  Файл «C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py», строка 661, в HTTPPost

    headers['Proxy-Authorization'] = 'Basic' + encodedAuth

TypeError: должно быть str, а не bytes

Ответ анонима от 22 августа 2018 г.

Хорошо, мы расшифровали это intо ascii. Мы не используем Python 3, поэтому он нас застал врасплох. Пожалуйста, обновите свой код здесь: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py.

Поскольку это открытый исходный код, не стесняйтесь отлаживать и вносить любые улучшения в Github. Поскольку у нас нет доступа к вашей настройке.

Ответ от службы поддержки GrabzIt 22 августа 2018 г.

Большое спасибо за вашу помощь.

OSError: Ошибка туннельного подключения: 407 Требуется проверка подлинности прокси-сервера

Я попробую отладить. 

Ответ анонима от 22 августа 2018 г.

Мы думаем, что знаем, в чем проблема, однако потребуется переписать часть кода. Поэтому мы свяжемся с вами, когда закончите. Надеюсь, через 24 часа.

Ответ от службы поддержки GrabzIt 22 августа 2018 г.

Я считаю, что мы решили проблему! Вы можете получить последнюю версию здесь: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py.

Ответ от службы поддержки GrabzIt 22 августа 2018 г.

Спасибо за ответ.

Новое сообщение об ошибке:

Traceback (последний последний вызов):
  Файл «GrabzIt_test.py», строка 54, в
    схватить это.SaveTo("результат.docx")
  Файл «C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py», строка 243, в SaveTo
    идентификатор = сам.Save()
  Файл «C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py», строка 217, в Save
    obj = self._take(sig, callBackURL)
  Файл «C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py», строка 231, в _take
    return self.HTTPPost(self.request.url, self.request.options._getParameters(self.applicationKey, sig, callBackURL, 'html', quote(self.request.data)))
  Файл «C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py», строка 629, в HTTPPost
    h = self._getConnection()
  Файл «C:\TEST\GrabzIt_python\GrabzIt\GrabzItClient.py», строка 679, в _getConnection
    h.putheader('прокси-авторизация', 'Basic' + encodedAuth)
  Файл «C:\Program Files\Python36\lib\http\client.py», строка 1201, в заголовке putheader.
    поднять CannotSendHeader()
http.client.CannotSendHeader

 

Ответ анонима от 22 августа 2018 г.

Мы внесли некоторые незначительные улучшения в: https://github.com/GrabzIt/grabzit/blob/master/python/GrabzIt/GrabzItClient.py.

И протестировали его на Python 2.7, 3.4 и 3.6, и он работает во всех средах, с прокси-серверами и без них, а также с авторизованными прокси-серверами.

Если у вас все еще не работает, вам нужно будет отладить код.

Ответ от службы поддержки GrabzIt 23 августа 2018 г.

Спасибо за ответ.

Я отлажу свой источник.

Кстати, вы проверяли имя пользователя, например, xxx@yyy.com?

Ответ анонима от 23 августа 2018 г.

Нет, я не думал, что это нужно будет правильно закодировать и декодировать, так что, возможно, проблема в этом.

Ответ от службы поддержки GrabzIt 23 августа 2018 г.