Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Рейтинг постов хаба

Anna | 15.06.2014 | нет комментариев
Здравствуй, Прогр!

Решил посмотреть лучшие посты своего любимого хабаи с ужасом нашел, что такой фичи нет.
Когда это нас останавливало!

Умоляю под кат всех желающих посмотреть на самые рейтинговые посты для всякого хаба пару слов о реализации скрипта.

Скрипт написан на питоне при помощи хорошей библиотеки grab, а вернее её модуля Spider. Спасибо автору(и по совместительству прогроюзеру) itforge за подробную документации.
В качестве БД применялась sqlite3. Парсились только страницы хаба, т.е. в сам пост паук не залазил, что отразилось на скорости скрипта: получена информация о 111690 постах менее чем за час, и это в 1 поток.

from grab.spider import Spider, Task
import sqlite3 as lite

class HabraParser(Spider):
    # отсель начинаем парсить
    initial_urls = ['http://habrahabr.ru/hubs/']

    def prepare(self):
        # сюда будем складывать
        self.post = []
        self.con = lite.connect('files/habra_hubs.db')

    def task_initial(self, grab, task):
        # стрелка, указывающая на следующую страницу списка хабов
        nav = grab.doc.select('//ul[@class="next-prev"]/li/a[@class="next"]')
        # парсим хабы и передаём ссылки в новое задание hub
        for elem in grab.doc.select('//div[@class="info"]/div[@class="stat"]/a[2]'):
            self.add_task(Task(name='hub', url=elem.attr('href')))
        # если стрелка существует - переходим на следующую страницу
        if nav.exists():
            self.add_task(Task(name='initial', url=nav.attr('href')))

    def task_hub(self, grab, task):
        nav = grab.doc.select('//a[@class="next" and @id="next_page"]')
        # парсим пост
        for elem in grab.doc.select('//div[@class="post shortcuts_item"]'):
            comments = ''
            score = ''
            post_url = elem.node.find('h1[@class="title"]/a').get('href')
            post_title = elem.node.find('h1[@class="title"]/a').text
            # Страховка от факапов
            try:
                comments = int(elem.node.find('.//span[@class="all"]').text)
            except:
                comments = 0

            try:
                score = int(elem.node.find('.//span[@class="score"]').text)
            except:
                score = 0

            self.post.append([
                score,
                comments,
                post_url,
                post_title
            ])

        if nav.exists():
            self.add_task(Task(name='hub', url=nav.attr('href')))
        else:
            # сберегаем в бд
            hub = task.url.split('/')[4] # наименование для таблицы
            self.save_data(hub) 

    def save_data(self, hub):
        with self.con:
            self.cur = self.con.cursor()
            self.cur.execute("DROP TABLE IF EXISTS %s"%hub)
            self.cur.execute("CREATE TABLE %s(Score INT, Comments INT, Url TEXT, PostTitle TEXT)"%hub)

            self.cur.executemany("INSERT INTO %s VALUES(?, ?, ?, ?)"%hub, self.post)

        self.post = []

Дальше остаётся только задавать вопросы бд вида:

("SELECT * FROM %s ORDER BY Score DESC LIMIT 10" % hub)

Для этого был тоже написан простенький скриптик, тот, что и сгенерировал огромную часть этой статьи.
Изначально была идея разместить ещё самые комментируемые посты(и для этого всё реализовано), но уж слишком толстой получается эта статья!

Хабы брались из данные:

habraindex > 100.0 and posts_number > 200

Бд, исходники и проч на гитхабе.

Ну а сейчас самое увлекательное. Я думаю всякий найдёт себе что-нибудь по вкусу.

Информационная безопасность

Были получены исходники 3300 глобальных интернет-планов 1154
Уязвимость на Habrahabr либо как украсть инвайт 581
Нифига себе сходил за хлебушком, либо история одного взлома 560
Безопасность интернет источников — взлом сайта rospil.info 475
Верни мои деньги, банкомат! 410
Как я ловил хакера 383
Новейший троян с валидной цифровой подписью LLC Mail.Ru маскируется под обновления знаменитых программ375
Как ловили меня 373
QIP — Минута ненависти (хистори на сервере) 369
Дефейс официального сайта ЕГЭ Санкт-Петербурга 348
Веб-разработка

Отчего Microsoft Internet Explorer 11 — худшее, что могло случиться с нами 505
Несколько пригодных сервисов 329
8 пригодных сервисов для веб-разработчика и дизайнера 311
Чек-лист вёрстки. Что дозволено отдавать заказчику, а что нужно переделывать 301
Наберитесь храбрости сделать не как все. 12 устаревших интерфейсных и технологических решений 295
Визуализация «В Контакте»: Скажи мне, кто твой друг? 290
Фоторама 286
Чем дрянен свой Open Source план 269
Генерирование изображений-заглушек 265
Грабли при верстке HTML писем 264
Программирование

Грядущее тут

Как мы искали Марс-3 661
?сные затмения с расстояния 36 тыс. км либо отчего мы об их космосе знаем огромнее чем о нашем 391
О космической доброте и Челябинском метеорите 385
Шофер марсохода Curiosity отвечает Прогру 359
Путешествия во времени и программирование 2: парадоксы 331
Неожиданно: спутник Электро-Л снял затмение по нашей просьбе 326
Веб 3.0 Децентрализация. Тренд на 5 лет 316
Opportunity – забытый рекордсмен 278
Звезда Гибели не необходима когда есть Curiosity 275
Восхитительный Марс 272
Game Development

Управление планами

Хотите скончаться стремительно?.. Станьте ПМ-ом! 169
Управление разработкой в жанре BDSM 153
Как от маленького сайта дойти до розничной сети и что для этого необходимо 140
Результативные совещания 132
Бесплатная электронная книга по эластичным методикам разработки 128
Мотивация удаленных работников 125
Совершенный шторм. Постмортем неанонсированного плана. 125
Корпоративный троллинг. Часть вторая 124
Советы, как удачно завалить план 123
Разработка макетов: а давайте в данный раз не будем спрашивать уборщицу? 122
DIY либо Сделай Сам

Читаем QR код 603
Сильный лазер своими руками за один вечер 463
Электровелосипед своими руками 449
Получаем изображение с оптического сенсора комьютерной мыши с поддержкой Arduino 375
Как красть бензин с поддержкой Ассемблера (основано на реальных событиях) 349
Кухонный компьютерный стол 335
Процессор 331
Как я собрал 1-й аналоговый заказчик для твиттера 330
Регистрация своей фирмы собственными руками, туду-лист 330
Делаем твёрдый переплёт для любимых книжек 326
Dura Lex

Госнаркоконтроль преследует Ализара 503
Как я выиграл суд с EMS Почта России 445
Вопреки неизвестного пользователя Програпрогра будет возбуждено уголовное дело 425
Как красть бензин с поддержкой Ассемблера (основано на реальных событиях) 349
Как я был торговцем порно 345
Про системного менеджера, обыск в его квартире и нелегальное изъятие компьютерной техники 307
Судья Алсуп может программировать и поучает юриста Oracle 241
Как я стал уголовником 234
Главе Крыма на открытии школы показали компьютерный класс с одними мониторами 228
Очередная регистрация ООО либо безжалостная война с налоговой 225
Математика

Подделываем вашу подпись при помощи шарнирного механизма. Теорема Кемпе 376
Пи. Научно не знаменитое 231
Когда не необходима тригонометрия 199
Гугл обучился строить графики математических функций 196
Философская геометрия, Часть 2. Корень из 3 и его утилитарное использование 190
Немножко математики, либо Отчего я не приобретаю лицензионный контент 182
«Футурама по-научному» от Multreality.com 168
Фундаментальное различие русской Википедии от английской 152
FAQ по проективной геометрии для программистов 141
Ричард Фейнман: Алгебра 130
Алгорифмы

Поправление расфокусированных и смазанных изображений. Практика 453
Декодирование JPEG для чайников 402
Подделываем вашу подпись при помощи шарнирного механизма. Теорема Кемпе 376
Поправление расфокусированных и смазанных изображений. Повышаем качество 349
Путешествия во времени и программирование 2: парадоксы 331
Идентификация некоторых современных CAPTCHA 307
Алгорифм сортировки Timsort 279
Опубликовано подтверждение P !>Сказ о том, как Непалы клад искали 241
Програквест с элементами космонавтики и геокешинга [done!] 241
Опасна ли комета ISON? 237
Частный космос сейчас и в России 227
Curiosity на дне 226
Linux

Криптография

Криптостойкость 1000-кратного хеширования пароля 324
Станция УВБ-76 подала четвёртый сигнал за 30 лет 217
ФБР не сумело взломать зашифрованный диск (сдались через год брутфорса) 215
Сноуден пролил свет на обстановку со взломом криптографии. Все нехорошо 196
Таинственный случай в нью-йоркском метро 196
Миссия невыполнима 196
Мифический криптограф Диффи попытался остановить патентного тролля 190
Дмитрий Скляров взломал цифровую подпись в камерах Canon 171
Вы небезопасно некомпетентны в криптографии 155
Элементарная криптография 137
Краудфандинг

Биржа убийств — верное применение Bitcoin 167
Пост-мортем: Divine Space на Kickstarter.com 128
0 A.D. — свободная тактика в настоящем времени собирает деньги на Indiegogo 115
Сообщество собрало огромнее 60 000 баксов на открытый само­стоятельный аудит TrueCrypt 114
Плати авторам, а не копирастам 110
Sprite Lamp: динамическое освещение 2D-объектов 109
Confederate Express — игра про выживание в тонах грозного ретро, «написанная» мастерами современного пиксель-арта (Kickstarter Campaign) 106
Донейт, Литрес и копирайт 106
Наш результат 3doodler`у. Собран за 20 минут 105
Кампания Spintires на Кикстартере увенчалась триумфом 103
Тестирование

Чек-лист вёрстки. Что дозволено отдавать заказчику, а что нужно переделывать 301
Отладка самолета? Это дюже легко! 256
Стандартный_тест_на_обработку_длинного_заголовка 234
Электромобиль Tesla S сломал оборудование для проведения краш-тестов 223
Разработка ПО авионики 215
7 бесплатных сервисов для проверки сайтов (о которых вы могли и не знать) 173
WinRAR vs 7-zip 154
Билд-светофор в офисе 152
Bomberman Online и програэффект — 450 игроков на одной карте. Отчёт и детали игрового движка 152
Может ли быть слишком много автоматизации в самолете? 151
Финансы для всех

Самый богатенький айтишник на этой улице 392
Что необходимо делать смолоду либо как стать богатым айтишником 217
Как устроен Forex и необходим ли он? 186
Беда общин в настоящем мире либо купонная лихорадка-2 163
22 основных тренда десятилетия по версии журнала Forbes 156
Как не стать бедным IT-шником из-за ошибки перевода 154
Отчего брать кредиты выигрышно? 151
Как попасть в «золотой миллиард» либо отрезвляющая статистика 146
Открытие компании в иностранной юрисдикции для айтишника, фрилансера, разработчика мобильных приложений 142
Искусство переговоров — это легко бизнес, ничего личного 136
Обработка изображений

Поправление расфокусированных и смазанных изображений. Практика 453
Техника для проверки подлинности денег 360
Поправление расфокусированных и смазанных изображений. Повышаем качество 349
The Foundry Nuke. Вступление 308
Идентификация некоторых современных CAPTCHA 307
Поправление расфокусированных и смазанных изображений 287
Blind Deconvolution — механическое поправление смазанных изображений 235
В новейший микроскоп IBM видно межатомные связи в молекуле 193
Новейший алгорифм для депикселизации графики 193
PNG — not GIF! 183
Электроника для начинающих

Mobile Development

Do-Ra. Дозиметр в мобильном телефоне 243
Сказ о том, как я инвестиции искал 140
Как сделать вебсайт для мобильных устройств 123
Microsoft приобрел Nokia 120
Как хотел срубить бабла с корпорации добродушна 117
Ботнет из утюгов и чайников: партия утюгов и чайников из Китая, рассылающих вирусы и спам через спрятанный в них Wi-Fi адаптер, задержана в СПб 107
OpenWeatherMap – как энтузиасты делают погоду 106
Пишите в первую очередь под платформы, которые знамениты в США, и не тратьте свои силы на остальные105
Безработный геймдизайнер сделал модель ?сной системы на движке Unreal 104
Определение местоположения без GPS: как устроен Яндекс.Локатор 101
Телефоны и коммуникаторы

То, чего еще никто не писал про Нокиа, Элопа и горящую платформу 462
Глядим на мир глазами рака-богомола: ближний инфракрасный диапазон 260
Как работает стилус Galaxy Note 244
К чёрту такие инновации! 224
Телефон от РЖД 198
Инсталлятор CyanogenMod появится в Google Play, разработчики получили $7 млн инвестиций 192
Все самое основное для очередного «убийцы Angry Birds» 185
Выключайте свои сотовые телефоны 166
Apple iPhone 5s: вскрытие, сопоставление с предыдущими поколениями и оценка ремонтопригодности 158
Nokia 105 за 15 евро с фонарем и аккумулятором 800 мА·ч 156
Переводы

Системное администрирование

Памятка пользователям ssh 344
Panasonic штурмует 266
Анализируй это, либо отчего я всякий день опаздываю и получаю премию 262
Метаморфоза часовых зон в России, Белоруссии и на Украине 245
Еще раз про IP-адреса, маски подсетей и вообще 236
Adobe рассылает непонятные письма 229
Как стать системным менеджером — пособие для начинающих (часть 1) 209
Нетипичная история «домового» провайдера 201
Лайфхак для сисадмина, когда не работает «ping ya.ru» 199
Черный понедельник 186
Разработка под Android

Google заблокировал приложение Moon Reader по жалобе LitRes 297
Програиндекс для статей по программированию под Android 188
Усовершенствованный Android NDK (Native Development Kit) 172
Android vs iOS на примере одной игры 156
Пишем первое приложение для Android 143
Конкурс ВК: Мессенджер для Android. Как это было!? 142
Как я продал права на своё приложение для Android 126
Galaxy S3: коренное снижения энерго-потребления mediaserver-ом 117
31 способ результативного программирования под Android 115
Пишем заказчик для Програ под Android 115
Интерфейсы

Неестественный ум

Крушим каптчу Яндекса 386
Элиза 328
Австралийские роботы сами придумали себе язык 212
Идентификация лиц человеческим мозгом: 19 фактов, о которых обязаны знать изыскатели компьютерного зрения 177
Взлом каптчи файлообменника 173
Нейронная сеть вопреки DDoS’а 171
Суперкомпьютер IBM Watson выучил уличный сленг: пришлось чистить ему память 162
Компьютер сгенерировал результативные, но непонятные человеку алгорифмы убыстрения TCP 142
Неприметная гибель распознавания речи 142
Разбор каптчи Xakep.ru 139
JAVA

Судья Алсуп может программировать и поучает юриста Oracle 241
Генерация музыки в настоящем времени 215
История одного вскрытия: реверс-инжиниринг Java ME трояна 207
Как я систему безопасности для авиакомпании разрабатывал и сам оказался в угрозы 189
Bomberman Online и програэффект — 450 игроков на одной карте. Отчёт и детали игрового движка 152
Java Logging: история кошмара 144
«Детский» геймдев либо «Как я играл в инди-разработчика» 143
Решение суда: Google не нарушает авторское право Oracle на Java API 138
Малоизвестные особенности Java 137
Самостоятельная кроссплатформенная монолитная программа на Java 136
Операционные системы

Разработчик ядра Windows NT объяснил поводы низкой продуктивности ОС 219
Инсталлятор CyanogenMod появится в Google Play, разработчики получили $7 млн инвестиций 192
«Телекон» извинился перед зрителями. Все точки над „i“ в истории про BolgenOS 189
Подмогнуть GNU/Linux — это легко! 183
Прототип национальной ОС разработают за 5 млн рублей и 16 дней 179
Помощь USB в KolibriOS: что внутри? Часть 1: всеобщая схема 161
Стенограмма доклада про Фантом-ОС, сделанного Дмитрием Завалишиным на ADD-2010 148
Школьник из Ставропольяпопросил у Медведева €1 млн на создание соперника Windows 146
Рассвет Haiku OS 137
Замкнутый круг вирусов. 125
HTML

Атакуем через HTML тег а 306
Чек-лист вёрстки. Что дозволено отдавать заказчику, а что нужно переделывать 301
Как превратить браузер в notepad за 1 секунду 282
Пример — часы на СSS3 без изображений и JavaScript 208
Отчего HTML считает, что «chucknorris» — это цвет? 199
В поисках совершенного css-фреймворка. Требования, реализация, maxmertkit 190
HTML и CSS безумство [перевод] 189
Тренды, возведенные в культ 189
HTML5 как победа научного материализма 183
Чёртова дюжина советов начинающим верстальщикам. Часть первая 151
Источник: programmingmaster.ru
Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB