4

Я хотел бы написать сценарий, который записывает размер очереди просмотра закрытых голосов на SO (в настоящее время ~ 95,5 тыс.), Опрашивая всего несколько раз в час, чтобы я мог построить общую тенденцию. Я знаю, что я собираюсь сделать в отношении синтаксического анализа, т.е. учитывая следующую часть ответа HTTP,

<div class="dashboard-num" title="95,508">95.5k</div>

Я бы применил регулярное выражение

<div\s+class="dashboard-num"\s+title="([^"]+)

и разделить на \D и взорвать массив, чтобы оставить только цифры, или что-то подобное. (Да, «Пони, он приходит», но это простая и грязная работа, во время которой я не ожидаю, что HTML-код переполнения стека изменится.)

В настоящее время у меня нет установки UNIX / Linux, иначе я бы собрал что-то вместе, используя cron, cURL и Perl (или sed или awk, если я чувствую себя достаточно смелым). Какой самый простой способ сделать это в Windows? Есть ли какая-нибудь утилита, которая создана для этого? Я готов установить Cygwin и такое программное обеспечение, если это действительно самый простой способ (скажем, по сравнению с написанием пакетных сценариев), но я надеюсь на некоторую программу, в которую я смогу ввести URL и регулярное выражение и быть в пути.

1 ответ1

4

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

Я просто

  1. скачал Cygwin,
  2. убедитесь, что во время установки проверили curl , cron и cygrunsrv ,
  3. следуя шагам, описанным в этом вопросе (ну, на самом деле, я столкнулся с некоторыми проблемами, но некоторые поиски в Google предлагали установить через cron-config со значениями по умолчанию, ввести ntsec для демона и ввести мой пароль Windows, который работал),
  4. установить следующий crontab:
    * * * * * /home/andrew/cron/get_cvrq_size.sh
  5. настройте следующий get_cvrq_size.sh:
    curl https://stackoverflow.com/review \| grep dashboard-num \| голова -1 \| sed 's /^.* <div class = "dashboard-num" title = "\([^"] \+\)".* $ /\1 /'\| sed 's /, //g' \| sed 's /^ /' `date -Iseconds -u` ', /' \>> /home/andrew/cron/cvrq_size.txt

и это работает как шарм :-)

2013-11-25T20:05:01+0000,95583
2013-11-25T20:06:01+0000,95583
2013-11-25T20:07:01+0000,95583
2013-11-25T20:08:01+0000,95583
2013-11-25T20:09:02+0000,95589
2013-11-25T20:10:01+0000,95589
2013-11-25T20:11:01+0000,95587
2013-11-25T20:12:01+0000,95587
2013-11-25T20:13:01+0000,95586
2013-11-25T20:14:01+0000,95589
2013-11-25T20:15:01+0000,95587
2013-11-25T20:16:01+0000,95586
2013-11-25T20:17:01+0000,95585
2013-11-25T20:18:01+0000,95584
2013-11-25T20:19:01+0000,95596
2013-11-25T20:20:01+0000,95596
2013-11-25T20:21:01+0000,95596
2013-11-25T20:22:01+0000,95595
2013-11-25T20:23:01+0000,95595

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .