Проверка сведений на ГМУ

Все бюджетники в крае старательно заполняют вседения о себе на "сайте ГМУ". Мы в этом тоже участвуем, но нам досталось самое приятное - контролировать процесс по части Управления Образования. Государственные сайты часто работают медленно - слишком уж много посетителей. Чтобы не усложнять процесс, мы поручили базовые проверки автоматике. Очень не хочется ждать 20-40 секунд открытия страницы в браузере, чтобы посмотреть, что соответствующая иконка у учреждения в результатах поиска отсутствует и начать загружать следующую страницу. Но ведь у меня есть /bin/bash...

Поручим автоматике запросить у bus.gov.ru учреждение по ИНН и проверить в результате поиска наличие определённых иконок.

#!/bin/bash
cd ~/job/bus.gov.ru
INNS='2301036580
... длинный, скучный список ИНН ...
2301047158'
rm *.htm
for INN in $INNS
do
wget -t 5 -T 10 -O $INN.htm "http://bus.gov.ru/public/register/search.html?action=search&agency=$INN&city=&authority=&level=&type=&status=&annulment="
done
echo 'Информация об учреждении'
for INN in $INNS
do
echo $INN `grep -c "<img src=\"/public/images/att.png\" title=\"Информация об учреждении\" border=\"0\"/>" $INN.htm`
done
echo 'Муниципальные задания'
for INN in $INNS
do
echo $INN `grep -c "<img src=\"/public/images/bag.png\" title=\"Услуги и работы учреждения\" border=\"0\"/>" $INN.htm`
done

Cписок ИНН был изначально отсортирован по наименованию учреждения. В LibreOffice, естественно.
Wget скачивает результаты поиска по одному. Невежливо запускать 90 загрузок одновременно - и серверу сведений тяжело, и странички рвутся. Да и на скорость не особо влияет.
Далее grep проверяет наличие картинок "с листочком" (сведения об организации). Файлы обрабатываются не в алфавитном порядке, а в том же порядке, что и скачивались. Это важно, поскольку результат планируется вставить обратно в Calc. Аналогично обрабатывается "портфель" муниципального задания.

Теперь осталось снова обзвонить те учреждения, у которых 0 по одному из пунктов.

P.S.
Теперь и с планами финансово-хозяйственной деятельности.

cd ~/jobs/bus
rm *.htm
 
# download html
echo -n 'Загрузка файлов...'
while read INN ; do
  wget -q -t 5 -T 10 -O $INN-search.htm "http://bus.gov.ru/public/register/search.html?action=search&agency=$INN"
BUSID=`grep -E -m 1 -o -e /public/agency/agency.html[?]agency=[0-9]+ $INN-search.htm | grep -E -o -e [0-9]+`
  echo -n '.'
  wget -q -t 5 -T 10 -O $INN-plans.htm "http://bus.gov.ru/public/agency/agency_plans.html?agency=$BUSID"
  echo -n '.'
done < inns.txt
echo ''
 
echo '----------------------------------------------------------------'
echo 'Информация об учреждении' - 'Муниципальные задания' -  'План ФХД'
while read INN ; do
AG_INFO=`grep -c "<img src=\"/public/images/att.png\" title=\"Информация об учреждении\" border=\"0\"/>" $INN-search.htm`
AG_MISSION=`grep -c "<img src=\"/public/images/bag.png\" title=\"Услуги и работы учреждения\" border=\"0\"/>" $INN-search.htm`
AG_PLANS=`grep -c -E "<a href=\"/public/agency/agency_plans.html\?agency=[0-9]+&plan=[0-9]+" $INN-plans.htm`
  echo $INN $AG_INFO $AG_MISSION $AG_PLANS
done < inns.txt
 
rm *.htm
Тематика: 

Комментарии

А как быть, когда половину учреждений имеют пустых двойников на этом самом ГМУ? Все реквизиты одинаковые кроме кода используемого самим сайтом. Таких учреждений у нас 5 из 17, а у кого то и поболее. Да кроме того, поиск по инн не все учреждения выдает...

У нас противоположная ситуация. нужно проверять наличие новых сведений по 87 учреждениям по несакольку раз в день. Но нам хотя бы достались правильные ИНН.

Я бы посоветовал вам один раз вручную выбрать внутренние "agency ID" сайта ГМУ для правильных организаций и работать с ними.
Вы найдёте эти цифры в адресе страницы "сведения об учреждении" после текста agency.html?agency=. Этот номер также можно увидеть на странице "Регистрационные данные организации," если сведения ещё не опубликованы.

Ещё, если на странице регистрационных данных скрыта адресная строка, попробуйте выловить этот номер с помощью "инспектирования элемента" в FireBug (плагин для firefox) или похожих инструментов. Они есть сейчас почти во всех браузерах, даже в Internet Explorer. Нужный вам код выглядит примерно так:
onclick="showPopup('/public/register/agencyInfo.html?agency=143251',950,600,null,'ChooseAgency');return false;

Думаю, модифицировать сценарий будет не сложно.

комментарии излишни все логично и понятно