Визначитися, яку книгу по програмуванню читати наступної, важко, та й ризиковано.

Як і належить розробнику, напевно, у вас мало часу, і левову його частку ви витрачаєте на читання книг. Ви могли б програмувати. Ви могли б відпочивати. Але замість цього ви виділяєте дорогоцінний час на розвиток своїх навичок.



Отже, яку книжку вам варто прочитати? Ми з колегами часто обговорюємо прочитану літературу, і я помітив, що наші думки з конкретних книг сильно відрізняються.

Тому я вирішив заглибитися в проблему. Моя ідея була така: проаналізувати найпопулярніший у світі ресурс для програмістів на предмет посилань на відомий книжковий магазин, а потім підрахувати, скільки разів згадується кожна з книг.

Читати далі →

Процес парсинга ускладнюється істотними витратами часу на обробку даних. Багатопоточність допоможе в рази збільшити швидкість обробки даних. Сайт для парсингу — «Довідник купюр світу», де отримаємо валюту у співвідношенні до інших.

Читати далі →

Аналіз статей Хабрахабр і Geektimes



Спочатку була ідея зібрати частотний словник слів Хабрахабр і Geektimes, але потім знайшла прекрасне: Детальний аналіз Хабрахабра з допомогою мови Wolfram Language (Mathematica) (перед переглядом цієї статті рекомендую пройти за посиланням), побачила різницю в результатах і вирішила зробити подібне для статей з Хабрахабр і Geektimes. В огляд не потрапили статті з подкастами та нестандартним оформленням (habrahabr.ru/article). Вийшов аналіз 170000 статей. Всі зображення клікабельні. Код Wolfram Notebook на github. Датасет на Яндекс.Диску.

Читати далі →

Класичні парсер-комбінатори на Python

Парсером називається частина програми, яка з лінійної послідовності простих даних будує більш складні структури даних з урахуванням деякої граматики.

Функціональні мови програмування дозволяють описувати функції вищих порядків, які приймають в якості аргументів і повертає як результат інші функції.

Парсер-комбінатори – відома техніка створення парсера, яка використовує можливості функціональних мов програмування для динамічного побудови більш складних парсерів з простих за правилами деякої граматики.

Читати далі →

Приклад використання Product API від Fetchee для парсингу товарів інтернет-магазину

image

У цій інструкції ми розповімо про те, як з допомогою Fetchee Product API отримати дані про товар URL на прикладі інтернет-магазину lamoda.

Для тих, хто не читав нашу минулу замітку — Product API буде корисний розробників, яким потрібно отримувати дані про товари з будь-якого магазину, але які не хочуть витрачати час на створення власної системи парсинга або вже усвідомили, що open-source бібліотеки володіють істотними обмеженнями і вимагають багато часу на підтримку. Наш автоматичний і не вимагає налаштування API для парсингу eCommerce даних дає можливість зосередиться на розробці основних функцій програми. До того ж спробувати його дуже просто. Деталі під катом.

Читати далі →

Парсинг резюме

Ті хто стикався з завданнями автоматизованого аналізу резюме, представляють сучасний стан справ в цій області — існуючі парсери в основному обмежуються виділенням контактних даних та ще кількох полів, таких як «посада» і «місто».

Для скільки-небудь осмисленого аналізу цього мало. Важливо не тільки виділити якісь рядки і позначити їх тегами, але і визначити, що за об'єкти криються за ними.

Живий приклад (шматок XML результату аналізу резюме від одного з лідерів галузі Sovren):

<EmployerOrg>
<EmployerOrgName>ТОВ Зірка-DSME</EmployerOrgName>
<PositionHistory positionType="directHire">
<Title>Провідний спеціаліст відділу розвитку інформаційних систем</Title>
<OrgName>
<OrganizationName>ТОВ Зірка-DSME</OrganizationName>
</OrgName>


Парсер Sovren чудово впорався з виділенням полів. Хлопці не дарма займаються цією справою без малого 20 років!
Але що далі робити з «Провідний спеціаліст відділу розвитку інформаційних систем»? Як зрозуміти, що ж це за посада, наскільки досвід роботи цієї людини релевантним для тієї чи іншої вакансії?


Читати далі →

Progrobot: бот довідки з мов програмування

Коли пишеш код, регулярно буває потрібно подивитися довідку по конкретній функції, модулю і т. д. Зазвичай я для цього заходжу на cppreference.com або на docs.python.org, але це зазвичай не миттєво — вимагає переходу по декількох сторінок мінімум, а в питоновской документації ще й часто просто складно знайти потрібну інформацію на сторінці, не кажучи вже про те, що гугл часто направляє на документацію за другою версією, а не по третій, і доводиться вручну перемикати.

Тому я подумав, що може бути корисний телеграм-бот, який буде всю цю інформацію знати і видавати за запитом довідку по конкретній функції, класу, модулю і т. п.

Так вийшов бот @Progrobot. Йому можна надіслати назву функції і отримати її короткий опис, можна послати назва модуля (в пітоні) або заголовкого файлу (c++) і отримати список всіх функцій в цьому модулі, і т. д. Поки є довідка з c++ (з cppreference) і python3 (з docs.python.org). Ще планував зробити пошук по stackoverflow, але виявилося, що API-шний пошук працює погано, та ще й є жорстке обмеження на кількість запитів — коротше, поки відключив, потім, може бути, выкачаю offline-базу і допилю.

Читати далі →

Scrapy: збираємо дані і зберігаємо в базу даних

Введення
Мене зацікавив даний фреймворк для збору інформації з сайтів. Тут були публікації з Scrapy, але оскільки детальної інформації російською мовою мало, то я хотів би розповісти про свій досвід.

Читати далі →

Як розпарсити JSON-рядок в командної рядку Linux


Якщо ви часто працюєте з текстами формату JSON з командного рядка або у шелл-скриптах, ви можете задатися питанням, чи є якась консольна утиліта, яка може розпарсити JSON-рядок. Консольний JSON-парсер може бути корисним, коли ви тестуєте або отлаживаете мережеві JSON-сервіси. Ви можете згодувати відповіді формату JSON від веб-сервісу консольному JSON-парсеру, тим самим легко вивчаючи важкочитаємі JSON-відповіді або витягуючи з них окремі об'єкти.

У цьому посібнику я покажу розпарсити JSON-рядок з командного рядка.

Читати далі →

Web scraping на Node.js і проблемні сайти

Це друга стаття про створення і використання скриптів для веб-скрейпинга на Node.js.
першої статті розбиралася найпростіша задача світу з веб-скрейпинга. Саме такі завдання дістаються веб-скрейперам в переважній більшості випадків – отримання даних з незахищених HTML-сторінок стабільно працюючого сайту. Швидкий аналіз сайту, HTTP-запити за допомогою needle (організовані за допомогою tress), рекурсивний прохід по посиланнях, DOM-парсинг за допомогою cheerio – ось це ось все.
У цій статті розуміється більш складний випадок. Не з тих, коли доводиться відмовлятися від взятого з боєм замовлення, але з тих, які починаючому скрейперу можуть зірвати дедлайн. До речі, ця задача містилася в реальному замовленні на одній міжнародній біржі фріланса, і перший виконавець її провалив.
Мета цієї статті (як і минулого) – показати весь процес створення і використання скрипта від постановки задачі і до отримання кінцевого результату, проте теми, вже розкриті в першій статті, висвітлюються тут досить коротко, так що я рекомендую почати з першою статті. Тут акцент буде на аналіз сайту з точки зору веб-скрейпинга, виявлення підводних каменів і способи їх обходу.
Читати далі →