schegloff (schegloff) wrote,
schegloff
schegloff

Categories:

Второй способ закрыть открытую информацию, или Качество open-source софта

В предыдущей записи я пообещал протестировать написанный для проекта ivbeg Конвертируем веб-данные в машинно-читаемый вид питон-парсер Виктора Миреева по реестру недобросовестных поставщиков. Под катом - результат тестирования и небольшой наброс.


Сам я тоже пишу скрипты на питоне (старые читатели может быть помнят lj_archiver.py), и привык, что копируешь файлик, запускаешь под питоном, смотришь какое-то время на сообщения "read N pages", после чего получаешь результат.

Как работает скрипт для реестра недобросовестных поставщиков:

1) скачиваем программку в zip, распаковываем в каталог и читаем read.me:

The program works in scrapy framework (scrapy.org).

2) ищем в гугле что такое scrapy; это такая библиотека, которая требует для своей работы:
Download and install:
1. Twisted for Windows - you may need to install pywin32 because of this Twisted bug
2. Install Zope.Interface (required by Twisted)
3. libxml2 for Windows
4. PyOpenSSL for Windows


Скачиваем все и устанавливаем, полезные ведь наверное библиотеки. Разумеется, одна из них (zope.interface) не имеет windows-инсталлятора, поэтому приходится осваивать питоновский easy-install.

3) в соответствии с read.me - In order to run parser, type ./scrapy-ctl.py runspider fas/spiders/rnp.py - запускаем программу. Несколько секунд - и она завершается с пустым результирующим файлом. Чтобы разобраться, что не так, приходится запустить ее снова из окна MS DOS, и скопировать протокол работы.

Начинается протокол так:
C:\WORK\MySoft\begtin_fas\scrapy-ctl.py:7: DeprecationWarning: scrapy.command.cmdline.execute() is deprecated, modify your project-ctl.py script to use scrapy.cmdline.execute() instead execute()

Deprecated - это такое страшное слово, обозначающее исключенную в новой версии языка/библиотеки старую возможность. Работать она может быть и будет, но безо всякого гарантированного результата. В нашем случае - просто не работает:

2010-08-29 11:51:40+0600 [-] Unhandled error in Deferred:
2010-08-29 11:51:40+0600 [-] Unhandled Error


Далее пользователь open-source софта (то есть я) оказывается перед дилеммой: то ли дебаггить (убирать этот Error и может быть еще несколько) чужой код на незнакомом фреймворке, то ли писать парсер самому. Ну и конечно же, никакого полного списка недобросовестных поставщиков как не было, так и нет.

В общем, все по Жванецкому: "...модернизировали, подхватили, перестроились, внедрили новый коэффициент, а включаешь - не работает". Такие дела.


Итак, первый способ закрыть открытую информацию - выложить ее в открытый доступ в неудобочитаемом виде.

Второй способ - выложить в открытый доступ open-source программу для чтения этой информации.

Решайте сами, какой способ надежнее :)

UPD. К чести ivbeg и его добровольных помощников замечу, что результат работы скрипта под Линукс, где он таки работает, выложен в открытый доступ вместе с самим скриптом. Я поначалу не поверил, что недобросовестных поставщиков на Россию всего 4099, и подумал, что приведен неполный пример отработки скрипта. Оказалось, что полный. Так что насчет "никакого полного списка нет" я был неправ, надо было не скрипт запускать, а в данные лезть.
Subscribe

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 41 comments