Итак, друг написал мне смс, cможете ли вы помочь мне узнать что-то в этой вашей Гане?. Конечно, я ответил утвердительно, затем она написала: Школы, которые предлагают техническое образование/строительство зданий. Аргх, я сдержался, чтобы не печатать, просто поищите в Google, но поиск иногда просто утомляет, и Google не делает его легче (хотя они пытаются с этими причудливыми картами и всем остальным).

На жаргоне капота я спросил себя: Что теперь делать? Как насчет создания набора данных с открытым исходным кодом для университетов Ганы? Так началось мое приключение. Я никогда раньше не публиковал наборы данных, поэтому я должен начать с всегда неизбежной рутинной работы, называемой исследование, и найти мне хороший инструмент для публикации моих данных об университетах Ганы, данных, которые у меня еще нет, я должен добавить .

без особых усилий я нашел это простое руководство по открытым данным, так удачно названное simpleopendata, и вот некоторые принципы, которых я должен придерживаться в своем рыцарском завоевании;

  • Публиковать текст, а не документы Microsoft Word или какой-то причудливый формат файла, о котором никто никогда не слышал, да (мой поспешно настроенный на «JSON " в любом случае).
  • Никогда не публикуйте табличные данные в формате pdf, т.е. JSON не является PDF
  • Используйте открытые лицензии.
  • Публикация, хорошо, я все еще не знаю, как публиковать

На данный момент я просто опубликую все данные, которые смогу собрать, на github, так много для поиска инструмента публикации.

Поиск

Мне нужна информация обо всех высших учебных заведениях Ганы.
Мне нужна информация обо всех высших учебных заведениях Ганы.
Мне нужна информация обо всех высших учебных заведениях Ганы.

Глаза, устремленные в небо, с нетерпением ждали ответа, но ответа не последовало. Гугл, Гугл... он звонил

Итак, я зашел на веб-сайт Национального совета по аккредитации Ганы, которому я должен доверять, кроме органа, созданного для того, чтобы будущее моей любимой Ганы не гнило из-за непродуктивного и бесплодного опыта обучения. По воле судьбы в этот день, субботу, 19 августа 2017 года, у веб-мастера были другие планы, так как официальный сайт Национального совета по аккредитации найти не удалось.

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

Что такое всемирная паутина, о, я помню, открытый мир, в котором не существует поддельных новостей и поддельных данных, или это люди, которые просто решили пересылать каждую дезинформацию, которая попадается им на пути? Вернемся к делу, чтобы не отвлекаться

У НАС ЕСТЬ ДАННЫЕ из Википедии, названия учреждений в Гане, теперь я могу начать поиск данных. Поэтому я обнажаю передовой исследовательский инструмент, передававшийся из поколения в поколение военачальниками, я размахиваю электронной таблицей, смачивая сталь своего клинка свежими каплями байтов, которые я извлекаю из Википедии.

Уровень извлечения данных 1000

Если вы брезгливо относитесь к хакерству (творческому искусству подчинять вещи своей воле), отвернитесь сейчас. Итак, эта страница википедии содержит названия аккредитованных государственных и частных учреждений, я мог бы просто

  • щелкните правой кнопкой мыши и скопируйте имя
  • вставить имя в мою таблицу

Но я очень хочу показать, что я знаю, как работает HTML, для вас, ленивых исследователей, давайте взломать. В разделе страницы с надписью Государственные университеты я щелкаю правой кнопкой мыши и выбираю проверить элемент.

Я вижу названия университетов в неупорядоченном списке

<ul>
<li><a href=”/wiki/University_of_Ghana” title=”University of Ghana”>University of Ghana</a></li>
...
</ul>

Поэтому я модифицирую html, задав элементу ul значение id hack_public`hack_public`

  • нажмите Enter, когда элемент ul выделен в инспекторе

Затем я перехожу к консоли в инструментах Chrome и произношу заклинание, используя зелье Javascript, я выполняю следующие строки и нажимаю command+v (ctrl+v для тех, кто использует оборудование, которое не должно называться) в моей электронной таблице.

var collector = [];
var list = document.getElementById("hack_public");
var list_items = list.children;
for(var end = list_items.length, pos = 0; pos < end; pos ++ ){
    var list_item = list_items[pos];
    var link = list_item.getElementsByTagName("a")[0];
    if(link){
        collector.push([link.innerText]);
    }
}
copy(collector.join('\r\n'))

Фрагмент кода ниже копирует список имен в буфер обмена моего компьютера. Использование Javascript в этом случае является излишним, но это было бы очень удобно, если бы я собирал вторичные данные, такие как URL-адреса (не используйте эту технику для сканирования данных из LinkedIn, они начнут предлагать вам получить профессиональный аккаунт 😊). Кроме того, сценарий определенно можно улучшить, добавив одну или две функции.

Используя более или менее ту же технику, я извлеку больше имен, но путешествие только началось, поскольку теперь мне нужно открыть веб-сайт каждого учебного заведения и надеяться, что они обновили содержание своих курсов. Может быть, я напишу дополнительный пост о своем завоевании и опубликую этот JSON на github.