Выгрузка списка списка запрещенных сайтов с Единого Реестра
|
|
logoff | Дата: Понедельник, 01.09.2014, 16:37 | Сообщение # 61 |
Тамбов
Группа: Администраторы
Сообщений: 655
Репутация: 19
Статус: Offline
| вот часть dump.xml из получаемого ответа от сервере register.zip
Цитата<?xml version="1.0" encoding="windows-1251"?><reg:register updateTime="2014-09-01T15:49:04+04:00" updateTimeUrgently="2014-09-01T15:49:04+04:00" formatVersion="2.0" xmlns:reg="http://rsoc.ru" xmlns:tns="http://rsoc.ru"><content id="347" includeTime="2012-11-18T15:17:51" entryType="1"><decision date="2012-11-10" number="101-РИ" org="Роскомнадзор"/>
|
|
| |
vlad5503 | Дата: Понедельник, 01.09.2014, 18:51 | Сообщение # 62 |
Группа: Проверенные
Сообщений: 10
Репутация: 0
Статус: Offline
| странно.. у меня так: Цитата <?xml version="1.0" encoding="windows-1251" ?> - <reg:register updateTime="2014-09-01T06:05:00+04:00" updateTimeUrgently="2014-08-30T21:02:00+04:00" xmlns:reg="http://rsoc.ru" xmlns:tns="http://rsoc.ru"> В запросе так: Код def sendRequest(requestFile,signatureFile,versionNum=2): # Формируем и отправляем запрос на файл, в ответе код file = open(requestFile, "rb") # входные параметры фаил xml и подпись файла data = file.read() file.close() xml = base64.b64encode(data) Подскажите, что не так у меня?...
|
|
| |
Тасичка | Дата: Вторник, 02.09.2014, 12:46 | Сообщение # 63 |
Воронеж
Группа: Проверенные
Сообщений: 4
Репутация: 2
Статус: Offline
| Что то у меня вообще перестало выгружаться... Пишет :
Traceback (most recent call last): File "build\bdist.win-amd64\egg\suds\client.py", line 112, in __init__ self.wsdl = reader.open(url) File "build\bdist.win-amd64\egg\suds\reader.py", line 152, in open d = self.fn(url, self.options) File "build\bdist.win-amd64\egg\suds\wsdl.py", line 136, in __init__ d = reader.open(url) File "build\bdist.win-amd64\egg\suds\reader.py", line 79, in open d = self.download(url) File "build\bdist.win-amd64\egg\suds\reader.py", line 95, in download fp = self.options.transport.open(Request(url)) File "build\bdist.win-amd64\egg\suds\transport\https.py", line 60, in open return HttpTransport.open(self, request) File "build\bdist.win-amd64\egg\suds\transport\http.py", line 64, in open raise TransportError(str(e), e.code, e.fp) TransportError: HTTP Error 404: Not Found
Скиньте пжлс рабочий вариант скрипта.
|
|
| |
vlad5503 | Дата: Вторник, 02.09.2014, 18:25 | Сообщение # 64 |
Группа: Проверенные
Сообщений: 10
Репутация: 0
Статус: Offline
| Теперь у меня выдает, что запрос не принят... (((
Думал подпись просрочена уже. Проверил - действительна. Проверил получение в ручном режиме - получил. Автоматом не принимает запрос. Скрипт подачи запроса такой: Код #!/usr/bin/env python # -*- coding: utf-8 -*-
import suds import base64 import time from os import remove from zipfile import *
API_URL = "http://vigruzki.rkn.gov.ru/services/OperatorRequest/?wsdl" XML_FILE_NAME = "req.xml" SIG_FILE_NAME = "req.xml.sig"
def getLastDumpDate(): ##Проверка последнего изменения файла на сервере client = suds.client.Client(API_URL) result=client.service.getLastDumpDate() return result
def sendRequest(requestFile,signatureFile,versionNum=2): # Формируем и отправляем запрос на файл, в ответе код file = open(requestFile, "rb") # входные параметры файл xml и подпись файла data = file.read() file.close() xml = base64.b64encode(data)
file = open(signatureFile, "rb") data = file.read() file.close() # print data sign = base64.b64encode(data) client = suds.client.Client(API_URL) result=client.service.sendRequest(xml,sign)
return dict(((k, v.encode('utf-8')) if isinstance(v, suds.sax.text.Text) else (k, v)) for (k, v) in result)
def getResult(code): # скачиваем фаил client = suds.client.Client(API_URL) result=client.service.getResult(code) return dict(((k, v.encode('utf-8')) if isinstance(v, suds.sax.text.Text) else (k, v)) for (k, v) in result)
date_file=getLastDumpDate()
request=sendRequest(XML_FILE_NAME,SIG_FILE_NAME) #Проверяем, принят ли запрос к обработке
if request['result']: #Запрос не принят, получен код code=request['code'] print 'Got code %s' % (code) print 'LastDumpDate %s' % (date_file) print 'Trying to get result...' print 'sleep 80 sec' time.sleep(80) while 1: #Пытаемся получить архив по коду request=getResult(code) if request['result']: #Архив получен, скачиваем его и распаковываем print 'Got it!' file_name = str(date_file)+'.zip' file = open(file_name, "wb") file.write(base64.b64decode(request['registerZipArchive'])) file.close() break else: #Архив не получен, проверяем причину. if request['resultComment']=='запрос обрабатывается': #Если это сообщение об обработке запроса, то просто ждем минутку. print 'Not ready yet.' print('sleep 60 sec') time.sleep(60) else: #Если это любая другая ошибка, выводим ее и прекращаем работу print 'Error: %s' % request['resultComment'] break else: #Запрос не принят, возвращаем ошибку print 'Error: %s' % request['resultComment']
z=ZipFile(file_name,'r') z.extractall() z.close() remove(file_name) Добавлено (02.09.2014, 18:20) --------------------------------------------- поправка в файле для правильной работы: Код def sendRequest(requestFile,signatureFile,versionNum=2.0): и ещё Код result=client.service.sendRequest(xml,sign, versionNum) Вот так должно работать...Добавлено (02.09.2014, 18:25) --------------------------------------------- поправка в файле для правильной работы: Кодdef sendRequest(requestFile,signatureFile,versionNum=2.0):и ещё Кодresult=client.service.sendRequest(xml,sign, versionNum) Вот так должно работать...
Сообщение отредактировал vlad5503 - Вторник, 02.09.2014, 15:16 |
|
| |
CAche | Дата: Среда, 03.09.2014, 09:00 | Сообщение # 65 |
Canberra
Группа: Проверенные
Сообщений: 3
Репутация: 2
Статус: Offline
| Код #!/usr/bin/env python # -*- coding: utf-8 -*-
import suds import base64 import zipfile from datetime import datetime import time
API_URL = "http://vigruzki.rkn.gov.ru/services/OperatorRequest/?wsdl" XML_FILE_NAME = "/путь/zapros.xml" SIG_FILE_NAME = "/путь/zapros.xml.sig" dumpFormatVersion = "2.0"
def getLastDumpDate(): client = suds.client.Client(API_URL) result=client.service.getLastDumpDate() return result
def sendRequest(requestFile,signatureFile,dumpFormatVersion): # formiruem i otpravlyaem zapros na file, v otvete - kod file = open(requestFile, "rb") # vhodnye parametry: file xml i file podpisi data = file.read() file.close() xml = base64.b64encode(data)
file = open(signatureFile, "rb") data = file.read() file.close() sign = base64.b64encode(data)
client = suds.client.Client(API_URL) result=client.service.sendRequest(xml,sign,dumpFormatVersion)
return dict(((k, v.encode('utf-8')) if isinstance(v, suds.sax.text.Text) else (k, v)) for (k, v) in result)
def getResult(code): # skachivaem file client = suds.client.Client(API_URL) result=client.service.getResult(code) return dict(((k, v.encode('utf-8')) if isinstance(v, suds.sax.text.Text) else (k, v)) for (k, v) in result)
print 'Start: ' + (datetime.now().strftime("%d.%m.%Y %H:%M")) date_file=getLastDumpDate() print str(date_file) + ' = '+ str(datetime.fromtimestamp(date_file/1000)) file = open('/путь/lastDumpDate.txt') ld = file.read() file.close()
if ld==(str(date_file) + ' = '+ str(datetime.fromtimestamp(date_file/1000))): print '----- NO changes: ' + ld + ' == ' + str(date_file) + ' = '+ str(datetime.fromtimestamp(date_file/1000)) else: print '----- Need to update: ' + ld + ' <> ' + str(date_file) + ' = '+ str(datetime.fromtimestamp(date_file/1000))
request=sendRequest(XML_FILE_NAME,SIG_FILE_NAME,dumpFormatVersion) #proveryaem, prinyat li zapros k obrabotke
if request['result']: ...далее стандартно... Вот кусок нашего кода, всё прекрасно работает. Содержимое реестра содержит код: Код <?xml version="1.0" encoding="windows-1251"?><reg:register updateTime="2014-09-01T15:49:04+04:00" updateTimeUrgently="2014-09-01T15:49:04+04:00" [b]formatVersion="2.0" xmlns:reg="http://rsoc.ru" xmlns:tns="http://rsoc.ru"><content id="347" includeTime="2012-11-18T15:17:51" entryType="1"><decision date="2012-11-10" number="101-РИ" org="Роскомнадзор"/> А первую версию отключили, по ней ошибки сыпятся, это нормально.
|
|
| |
Тасичка | Дата: Среда, 03.09.2014, 16:07 | Сообщение # 66 |
Воронеж
Группа: Проверенные
Сообщений: 4
Репутация: 2
Статус: Offline
| Невнимательность.... забыл поменять URL на http://vigruzki.rkn.gov.ru/services/OperatorRequest/?wsdl P.S. Вчера еще добавлял пост в догонку своему, все работает , всем спс.
|
|
| |
vlad5503 | Дата: Пятница, 16.01.2015, 16:05 | Сообщение # 67 |
Группа: Проверенные
Сообщений: 10
Репутация: 0
Статус: Offline
| Парни спасайте! Потерял свой файлик порядок и что устанавливать для скриптов по получению реестра. И вспомнить не могу как ставил suds... Python установил. а что далее и как ну ни как не могу вспомнить самый первый пост прочитал, но не помогло. Ссылку посмотрел - нифига не вспомнил... На том сервер, что когда-то ставил все работает, скопировал оттуда файлики, но не тут было. Сами понимаете, что надо ещё основу(так сказать установить)...Добавлено (16.01.2015, 16:05) --------------------------------------------- Эх память "оперативная"... слегка закипела. Вспомнил, установил, заработало.
Надо идти пивком охладить перегрев.... Всех с наступившим Новым Годом!!! Здоровья, удачи, хорошей з/п и счастья в личке!
Сообщение отредактировал vlad5503 - Пятница, 16.01.2015, 14:37 |
|
| |
vad | Дата: Вторник, 20.01.2015, 09:23 | Сообщение # 68 |
Барнаул
Группа: Проверенные
Сообщений: 223
Репутация: 17
Статус: Offline
| С Новым Годом же! )
|
|
| |
vlad5503 | Дата: Вторник, 17.02.2015, 08:39 | Сообщение # 69 |
Группа: Проверенные
Сообщений: 10
Репутация: 0
Статус: Offline
| Что думаете по новым правилам получения реестра запретных сайтов? Кто-то пробовал уже новый технология ? Добавлено (17.02.2015, 08:39) --------------------------------------------- Я проверил на тестовом выгрузку... старым скриптом - получил выгрузку. Кто-то пробовал с методом getLastDumpDateEx ? Не силен я в питоне... что в коде надо менять? Код def getLastDumpDate(): ##Проверка последнего изменения файла на серве client = suds.client.Client(API_URL) result=client.service.getLastDumpDate() return result
Это Код result=client.service.getLastDumpDate()
Код result=client.service.getLastDumpDateEx
|
|
| |
logoff | Дата: Среда, 18.02.2015, 17:20 | Сообщение # 70 |
Тамбов
Группа: Администраторы
Сообщений: 655
Репутация: 19
Статус: Offline
| Цитата vlad5503 ( ) Что думаете по новым правилам получения реестра запретных сайтов? Кто-то пробовал уже новый технология ? Опять изменения?
|
|
| |
vlad5503 | Дата: Четверг, 01.12.2016, 12:07 | Сообщение # 71 |
Группа: Проверенные
Сообщений: 10
Репутация: 0
Статус: Offline
| Всем привет! В свете того, что в инете появились русскоязичные имена доменов возникла проблема в работе скрипта parser-url.py и parser-domain.py. Они не могут переварить кодировку... Выдают такое сообщение:
Код Traceback (most recent call last): File "./parser-url.py", line 9, in <module> print node.childNodes[0].nodeValue UnicodeEncodeError: 'ascii' codec can't encode characters in position 28-35: ordinal not in range(128) Может кто-то уже поборол эту ошибку...? Просьба подсказать. p/s/ Ну не доходят руки до изучения питона
|
|
| |
Programmmer | Дата: Вторник, 11.04.2017, 09:53 | Сообщение # 72 |
Группа: Проверенные
Сообщений: 2
Репутация: 0
Статус: Offline
| Всем привет. Кто-нибудь может поделиться скриптом/скриптами выгрузки и парсинга РКН. Буду очень благодарен. В первом посту ссылка на скрипт дохлая, точнее на файлообменнике файлы удалены.
|
|
| |
vlad5503 | Дата: Среда, 12.04.2017, 05:34 | Сообщение # 73 |
Группа: Проверенные
Сообщений: 10
Репутация: 0
Статус: Offline
| Посмотрите здесь скрипты http://forum.nag.ru/forum/index.php?showtopic=125393
|
|
| |
Programmmer | Дата: Среда, 12.04.2017, 05:56 | Сообщение # 74 |
Группа: Проверенные
Сообщений: 2
Репутация: 0
Статус: Offline
| Цитата vlad5503 ( ) Спасибо. Эти скрипты уже скачал. Интерес был в скриптах написанных именно на питоне)
|
|
| |
roterb | Дата: Пятница, 16.08.2024, 06:02 | Сообщение # 75 |
Москва
Группа: Пользователи
Сообщений: 4
Репутация: 0
Статус: Offline
|
|
|
| |