Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

The art of Node.js or how to do something cool using public data by Ilya Zaprutski

1,069 views

Published on

Today, economists believe that the most valuable resource is not oil, but data. The Internet, in turn, is the place where we can find any information, the main thing is to know where and what to look for.

During the report, I will tell how, having an original idea and a limited budget, make an application that will be really useful, and on which you can make money.

Published in: Technology
  • Be the first to comment

The art of Node.js or how to do something cool using public data by Ilya Zaprutski

  1. 1. The Art of Node.js or how to do something cool using public data Ilya Zaprutski Summer. Sea. JavaScript.
  2. 2. The Art of Node.js или как сделать что-то крутое, используя публичные данные
  3. 3. 3 Всем привет! Я - Илья Запруцкий Software Engineer в iTechArt Group Telegram: @ilya_zaprutski
  4. 4. 4 “Большое искусство служит большим целям”
  5. 5. Как это сделать? 5
  6. 6. 1. Использовать сторонние API 6
  7. 7. 7 Его нет Даже за $
  8. 8. 8 Устарели и не поддерживаются
  9. 9. 2. Web scraping 9
  10. 10. 10 Web scraping
  11. 11. 11
  12. 12. 12
  13. 13. 13 Почему Node.js
  14. 14. 14 Этапы
  15. 15. Загрузка документа Парсинг Нормализация * 15
  16. 16. Загрузка документа 16
  17. 17. request-promise – HTTP клиент, который позволяет делать простые и быстрые запросы 17
  18. 18. 18 import request from 'request-promise'; request('http://www.google.com') .then((htmlString) => { // Process html... }) .catch((err) => { // Crawling failed... });
  19. 19. Ограничения 19
  20. 20. 20 Одностраничные приложения
  21. 21. Глубокий анализ сайта 21
  22. 22. 22 GraphQL
  23. 23. 23
  24. 24. 24 const options = { uri: 'https://www.instagram.com/ilya.zaprutski/', setViewport: { width: 1240, height: 680 }, }; const scrape = async (options) => { const browser = await puppeteer.launch(options); const page = await browser.newPage(); await page.setViewport(options.setViewport); await page.goto(options.uri); const content = await page.content(); await browser.close(); return content; }; 24
  25. 25. 25 request-promise
  26. 26. 26 Puppeteer
  27. 27. Scheduler 27
  28. 28. 28 node-schedule
  29. 29. 29 import schedule from 'node-schedule'; const job = schedule.scheduleJob('30 0 * * *', () => { generateAlerts(); });
  30. 30. 429 Too Many Requests 30
  31. 31. 31
  32. 32. Загружаем и устанавливаем Tor 32
  33. 33. Запускаем 33
  34. 34. 34 const TorHttpAgent = require('socks5-http-client/lib/Agent'); const TorHttpsAgent = require('socks5-https-client/lib/Agent'); const scrape = (params) => { const options = { ...defaultOptions, ...params }; const parsedUrl = parse(options.url); const Agent = parsedUrl.protocol === 'https:' ? TorHttpsAgent : TorHttpAgent; options.headers = { ...options.headers, 'User-Agent': ua.getRandom() }; options.agentClass = Agent; options.agentOptions = { socksHost: 'localhost', socksPort: options.socksPort || 9050, }; return request(options); }; 34
  35. 35. Загрузка документа Парсинг Нормализация * 35
  36. 36. 36 cheerio – jQuery для Node.js
  37. 37. 37 import cheerio from 'cheerio'; const htmlStr = '<h2 class="title">Hello</h2>’; const $ = cheerio.load(htmlStr); $('h2.title').text(‘Odessa js!!!'); $('h2').addClass('welcome’); $.html(); //= > <h2 class="title welcome">Odessa js!!!</h2> 37
  38. 38. 38 const defaultOptions = { uri: 'https://www.itechart.by', transform: html => cheerio.load(html), }; const scrape = (params) => { const options = { ...defaultOptions, ...params }; return request(options); }; 38
  39. 39. Загрузка документа Парсинг Нормализация * 39
  40. 40. 40
  41. 41. 41 Google Vision AI
  42. 42. 42
  43. 43. Загрузка документа Парсинг Нормализация * 43
  44. 44. 44 Демо 44
  45. 45. 45 Демо
  46. 46. 4646
  47. 47. 47
  48. 48. 48 Немного про данные 48
  49. 49. 49 Озеро данных
  50. 50. 50 Данные с быстрым доступом Структурированные данные Архивные данные
  51. 51. 51 Процесс обработки данных
  52. 52. 5252 Процесс обработки данных
  53. 53. 5353 Crawler
  54. 54. 5454 Процесс обработки данных
  55. 55. 55 Обработка ошибок
  56. 56. 5656 Обработка ошибок
  57. 57. 5757 Обработка ошибок
  58. 58. 5858 Обработка ошибок
  59. 59. 5959 Обработка ошибок
  60. 60. 60 Мониторинг данных
  61. 61. 6161
  62. 62. 62 Планы на будущее
  63. 63. 63 Эксперименты с лямбдой
  64. 64. 64 Обработка данных в режиме реального времени
  65. 65. 65 Очередь с приоритетом Priority queue
  66. 66. 66 Как защитить свои данные
  67. 67. × Блокировка юзер-агента × Блокировка IP-адресов × Использование капчи 67
  68. 68. 68 Предоставить публичный API
  69. 69. 69 Мониторинг логов
  70. 70. 70 Ограничения по числу запросов
  71. 71. 71 Невидимая капча
  72. 72. 72 Изменение структуры сайта
  73. 73. 73 Фейковые ссылки
  74. 74. 74 Спасибо за внимание
  75. 75. 75 Вопросы? Telegram: @ilya_zaprutski
  76. 76. 76 Is Web Scraping Illegal? Web Scraping and Crawling Are Perfectly Legal, Right? Do not protect your website from scraping

×