Ранее мы уже проверяли наличие мобильных версий у сайтов, а сегодня будем измерять скорость загрузки страниц, их юзабилити, и даже получать скриншоты сайтов. Точнее все это делать будет Google, а мы всего лишь спарсим информацию из их сервиса PageSpeed Insights. Для того, чтобы составить пресет, нужно проанализировать алгоритм работы сервиса. Для этого воспользуемся Инструментами разработчика в Chrome и посмотрим какие запросы отправляются при нажатии кнопки Анализировать в сервисе. Как видим - отправляется 2 запроса: для десктопной и для мобильной версий. В ответ приходит нужная нам информация в JSON. Т.е. задача парсера - отправить оба запроса и распарсить ответ. Но, проанализировав получаемый в качестве ответа JSON, можно заметить, что там есть скриншоты, но они приходят не в виде ссылки, а в виде BASE64 кодированной картинки. При этом в самой строке заменены некоторые символы, поэтому это тоже нужно будет учесть. Такую картинку можно вывести на обычной HTML странице в теге <img...>. Поэтому весь результат мы будем выводить в виде HTML страницы. А чтобы это все красиво оформить, воспользуемся способом ранее описанным в статье Вывод результатов в таблицу. Итак, составляем пресет: Для десктопной и мобильной версии используем отдельные парсеры В Общем формате результата для парсинга JSON используем $tools.parseJSON и форматируем результат (добавляем HTML теги, чтобы получилась таблица) В Начальном и Конечном текстах прописываем хедер и футер будущей HTML страницы Спойлер: Код для импорта Код: eyJwcmVzZXQiOiJQYWdlU3BlZWQgSW5zaWdodHMiLCJ2YWx1ZSI6eyJwcmVzZXQi OiJQYWdlU3BlZWQgSW5zaWdodHMiLCJwYXJzZXJzIjpbWyJOZXQ6OkhUVFAiLCJk ZWZhdWx0Iix7InR5cGUiOiJvdmVycmlkZSIsImlkIjoiZ29vZENvZGUiLCJ2YWx1 ZSI6WzIwMF19LHsidHlwZSI6Im92ZXJyaWRlIiwiaWQiOiJxdWVyeWZvcm1hdCIs InZhbHVlIjoiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vcGFnZXNwZWVkb25s aW5lL3YzYmV0YTEvcnVuUGFnZXNwZWVkP3N0cmF0ZWd5PW1vYmlsZSZzY3JlZW5z aG90PXRydWUmdXJsPSRxdWVyeSJ9XSxbIk5ldDo6SFRUUCIsImRlZmF1bHQiLHsi dHlwZSI6Im92ZXJyaWRlIiwiaWQiOiJnb29kQ29kZSIsInZhbHVlIjpbMjAwXX0s eyJ0eXBlIjoib3ZlcnJpZGUiLCJpZCI6InF1ZXJ5Zm9ybWF0IiwidmFsdWUiOiJo dHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9wYWdlc3BlZWRvbmxpbmUvdjNiZXRh MS9ydW5QYWdlc3BlZWQ/c3RyYXRlZ3k9ZGVza3RvcCZzY3JlZW5zaG90PXRydWUm dXJsPSRxdWVyeSJ9XV0sInJlc3VsdHNGb3JtYXQiOiJbJSAnPHRyPic7XG4nPHRk PicgXyBxdWVyeSBfICc8L3RkPic7XG5qc29uMSA9IHRvb2xzLnBhcnNlSlNPTihw MS5kYXRhKTtcbmpzb24xLnJlc3BvbnNlQ29kZSA9PSAnMjAwJyA/ICc8dGQ+JyBf IGpzb24xLnJ1bGVHcm91cHMuU1BFRUQuc2NvcmUgXyAnPC90ZD48dGQ+JyBfIGpz b24xLnJ1bGVHcm91cHMuVVNBQklMSVRZLnNjb3JlIF8gJzwvdGQ+JyA6ICc8dGQ+ bm9uZTwvdGQ+PHRkPm5vbmU8L3RkPic7XG5cIjx0ZD48YSBocmVmPScjJyBjbGFz cz0ncG9wJz48aW1nIHN0eWxlPSd3aWR0aDoyNSU7aGVpZ2h0OjI1JTsnIHNyYz0n ZGF0YTpcIiBfIGpzb24xLnNjcmVlbnNob3QubWltZV90eXBlIF8gJztiYXNlNjQs JyBfIGpzb24xLnNjcmVlbnNob3QuZGF0YS5yZXBsYWNlKCdfJywgJy8nKS5yZXBs YWNlKCctJywgJysnKSBfIFwiJyAvPjwvYT48L3RkPlwiO1xuanNvbjIgPSB0b29s cy5wYXJzZUpTT04ocDIuZGF0YSk7XG5qc29uMi5yZXNwb25zZUNvZGUgPT0gJzIw MCcgPyAnPHRkPicgXyBqc29uMi5ydWxlR3JvdXBzLlNQRUVELnNjb3JlIF8gJzwv dGQ+JyA6ICc8dGQ+bm9uZTwvdGQ+JztcblwiPHRkPjxhIGhyZWY9JyMnIGNsYXNz PSdwb3AnPjxpbWcgc3R5bGU9J3dpZHRoOjUwJTtoZWlnaHQ6NTAlOycgc3JjPSdk YXRhOlwiIF8ganNvbjIuc2NyZWVuc2hvdC5taW1lX3R5cGUgXyAnO2Jhc2U2NCwn IF8ganNvbjIuc2NyZWVuc2hvdC5kYXRhLnJlcGxhY2UoJ18nLCAnLycpLnJlcGxh Y2UoJy0nLCAnKycpIF8gXCInIC8+PC9hPjwvdGQ+XCI7XG5cIjwvdHI+XFxuXCIg JV0iLCJyZXN1bHRzU2F2ZVRvIjoiZmlsZSIsInJlc3VsdHNGaWxlTmFtZSI6IiRk YXRlZmlsZS5mb3JtYXQoKS5odG1sIiwiYWRkaXRpb25hbEZvcm1hdHMiOltdLCJy ZXN1bHRzVW5pcXVlIjoibm8iLCJxdWVyeUZvcm1hdCI6WyJodHRwOi8vJHF1ZXJ5 Il0sInVuaXF1ZVF1ZXJpZXMiOmZhbHNlLCJzYXZlRmFpbGVkUXVlcmllcyI6ZmFs c2UsIml0ZXJhdG9yT3B0aW9ucyI6eyJvbkFsbExldmVscyI6ZmFsc2UsInF1ZXJ5 QnVpbGRlcnNBZnRlckl0ZXJhdG9yIjpmYWxzZSwicXVlcnlCdWlsZGVyc09uQWxs TGV2ZWxzIjpmYWxzZX0sInJlc3VsdHNPcHRpb25zIjp7Im92ZXJ3cml0ZSI6ZmFs c2V9LCJkb0xvZyI6Im5vIiwia2VlcFVuaXF1ZSI6Ik5vIiwibW9yZU9wdGlvbnMi OnRydWUsInJlc3VsdHNQcmVwZW5kIjoiPCFET0NUWVBFIGh0bWw+XG48aHRtbCBs YW5nPVwiZW5cIj5cbjxoZWFkPlxuICA8dGl0bGU+UGFnZVNwZWVkIEluc2lnaHRz PC90aXRsZT5cbiAgPG1ldGEgY2hhcnNldD1cInV0Zi04XCI+XG4gIDxtZXRhIG5h bWU9XCJ2aWV3cG9ydFwiIGNvbnRlbnQ9XCJ3aWR0aD1kZXZpY2Utd2lkdGgsIGlu aXRpYWwtc2NhbGU9MVwiPlxuICA8c2NyaXB0IHNyYz1cImh0dHBzOi8vYWpheC5n b29nbGVhcGlzLmNvbS9hamF4L2xpYnMvanF1ZXJ5LzEuMTEuMy9qcXVlcnkubWlu LmpzXCI+PC9zY3JpcHQ+XG4gIDxzY3JpcHQgc3JjPVwiaHR0cHM6Ly9tYXhjZG4u Ym9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4zLjcvanMvYm9vdHN0cmFwLm1p bi5qc1wiIGludGVncml0eT1cInNoYTM4NC1UYzVJUWliMDI3cXZ5alNNZkhqT01h TGtmdVdWeFp4VVBuQ0pBN2wybUNXTklwRzltR0NEOHdHTkljUEQ3VHhhXCIgY3Jv c3NvcmlnaW49XCJhbm9ueW1vdXNcIj48L3NjcmlwdD5cbiAgPHNjcmlwdCBzcmM9 XCJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9ib290c3Ry YXAtdGFibGUvMS44LjEvYm9vdHN0cmFwLXRhYmxlLWFsbC5taW4uanNcIj48L3Nj cmlwdD5cbiAgPGxpbmsgcmVsPVwic3R5bGVzaGVldFwiIGhyZWY9XCJodHRwczov L21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjMuNy9jc3MvYm9v dHN0cmFwLm1pbi5jc3NcIiBpbnRlZ3JpdHk9XCJzaGEzODQtQlZZaWlTSUZlSzFk R21KUkFreWN1SEFIUmczMk9tVWN3dzdvbjNSWWRnNFZhK1BtU1Rzei9LNjh2YmRF amg0dVwiIGNyb3Nzb3JpZ2luPVwiYW5vbnltb3VzXCI+XG4gIDxsaW5rIHJlbD1c InN0eWxlc2hlZXRcIiBocmVmPVwiaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNv bS9hamF4L2xpYnMvYm9vdHN0cmFwLXRhYmxlLzEuOC4xL2Jvb3RzdHJhcC10YWJs ZS5taW4uY3NzXCI+XG48L2hlYWQ+XG48Ym9keT5cbjxkaXYgY2xhc3M9XCJtb2Rh bCBmYWRlXCIgaWQ9XCJpbWFnZW1vZGFsXCIgdGFiaW5kZXg9XCItMVwiIHJvbGU9 XCJkaWFsb2dcIiBhcmlhLWxhYmVsbGVkYnk9XCJteU1vZGFsTGFiZWxcIiBhcmlh LWhpZGRlbj1cInRydWVcIj5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZ1wi PlxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+ICAgICAgICAgICAg ICBcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XG4gICAgICBcdDxi dXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2xvc2VcIiBkYXRhLWRpc21p c3M9XCJtb2RhbFwiPjxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZ0aW1lczs8 L3NwYW4+PHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+Q2xvc2U8L3NwYW4+PC9idXR0 b24+XG4gICAgICAgIDxpbWcgc3JjPVwiXCIgY2xhc3M9XCJpbWFnZXByZXZpZXdc IiBzdHlsZT1cIndpZHRoOiAxMDAlO2hlaWdodDoxMDAlO1wiID5cbiAgICAgIDwv ZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPHNjcmlwdD5cbiQo ZnVuY3Rpb24oKSB7XG5cdFx0JCgnLnBvcCcpLm9uKCdjbGljaycsIGZ1bmN0aW9u KCkge1xuXHRcdFx0JCgnLmltYWdlcHJldmlldycpLmF0dHIoJ3NyYycsICQodGhp cykuZmluZCgnaW1nJykuYXR0cignc3JjJykpO1xuXHRcdFx0JCgnI2ltYWdlbW9k YWwnKS5tb2RhbCgnc2hvdycpOyAgIFxuXHRcdH0pO1x0XHRcbn0pO1xuPC9zY3Jp cHQ+XG48ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XG4gIDxoMj5QYWdlU3BlZWQg SW5zaWdodHM8L2gyPlxuICA8cD48YSBocmVmPVwiaHR0cHM6Ly9kZXZlbG9wZXJz Lmdvb2dsZS5jb20vc3BlZWQvZG9jcy9pbnNpZ2h0cy9hYm91dD9obD1ydS1SVSZ1 dG1fc291cmNlPVBTSSZ1dG1fbWVkaXVtPWluY29taW5nLWxpbmsmdXRtX2NhbXBh aWduPVBTSVwiPlx1MDQxNFx1MDQzNVx1MDQ0Mlx1MDQzMFx1MDQzYlx1MDQ0Y1x1 MDQzZFx1MDQzNVx1MDQzNSBcdTA0M2UgXHUwNDQxXHUwNDM1XHUwNDQwXHUwNDMy XHUwNDM4XHUwNDQxXHUwNDM1PC9hPjwvcD4gICAgICAgICAgICBcbiAgPHRhYmxl IGNsYXNzPVwidGFibGUgdGFibGUtYm9yZGVyZWRcIiBkYXRhLXNvcnQtbmFtZT1c InNpdGVcIiBkYXRhLXNvcnQtb3JkZXI9XCJhc2NcIiBkYXRhLXRvZ2dsZT1cInRh YmxlXCI+XG4gICAgPHRoZWFkPlxuICAgICAgPHRyPlxuICAgICAgICA8dGggZGF0 YS1maWVsZD1cInNpdGVcIiBkYXRhLWFsaWduPVwibGVmdFwiIGRhdGEtc29ydGFi bGU9XCJ0cnVlXCI+XHUwNDIxXHUwNDMwXHUwNDM5XHUwNDQyPC90aD5cbiAgICAg ICAgPHRoIGRhdGEtZmllbGQ9XCJtc3BlZWRcIiBkYXRhLWFsaWduPVwiY2VudGVy XCIgZGF0YS1zb3J0YWJsZT1cInRydWVcIj5Nb2JpbGU8YnI+c3BlZWQ8L3RoPlxu ICAgICAgICA8dGggZGF0YS1maWVsZD1cIm11c2FiaWxpdHlcIiBkYXRhLWFsaWdu PVwiY2VudGVyXCIgZGF0YS1zb3J0YWJsZT1cInRydWVcIj5Nb2JpbGU8YnI+dXNh YmlsaXR5PC90aD5cbiAgICAgICAgPHRoIGRhdGEtZmllbGQ9XCJtc2NyZWVuc2hv dFwiIGRhdGEtYWxpZ249XCJjZW50ZXJcIiBkYXRhLXNvcnRhYmxlPVwidHJ1ZVwi Pk1vYmlsZTxicj5zY3JlZW5zaG90PC90aD5cbiAgICAgICAgPHRoIGRhdGEtZmll bGQ9XCJkdXNhYmlsaXR5XCIgZGF0YS1hbGlnbj1cImNlbnRlclwiIGRhdGEtc29y dGFibGU9XCJ0cnVlXCI+RGVza3RvcDxicj5zcGVlZDwvdGg+XG4gICAgICAgIDx0 aCBkYXRhLWZpZWxkPVwiZHNjcmVlbnNob3RcIiBkYXRhLWFsaWduPVwiY2VudGVy XCIgZGF0YS1zb3J0YWJsZT1cInRydWVcIj5EZXNrdG9wPGJyPnNjcmVlbnNob3Q8 L3RoPlxuICAgICAgPC90cj5cbiAgICA8L3RoZWFkPlxuICAgIDx0Ym9keT5cbiIs InJlc3VsdHNBcHBlbmQiOiJcbjwvdGJvZHk+XG48L3RhYmxlPlxuPHAgYWxpZ249 XCJyaWdodFwiPjxmb250IGZhY2U9XCJtb25vc3BhY2VcIiBzaXplPVwiMlwiIGNv bG9yPVwic2lsdmVyXCI+PGk+UGFyc2VkIGJ5IDxhIGhyZWY9XCJodHRwOi8vYS1w YXJzZXIuY29tL1wiPkEtUGFyc2VyPC9hPi48L2k+PC9mb250PjwvcD4gXG48L2Rp dj5cbjwvYm9keT5cbjwvaHRtbD4iLCJxdWVyeUJ1aWxkZXJzIjpbXSwicmVzdWx0 c0J1aWxkZXJzIjpbXSwiY29uZmlnT3ZlcnJpZGVzIjpbXSwicnVuVGFza09uQ29t cGxldGUiOm51bGwsInVzZVJlc3VsdHNGaWxlQXNRdWVyaWVzRmlsZSI6ZmFsc2Us InJ1blRhc2tPbkNvbXBsZXRlQ29uZmlnIjoiZGVmYXVsdCIsInRvb2xzSlMiOiIi fX0= Результат Мы получим страницу, которая будет выглядеть примерно так: Посмотреть "вживую" Примечание. PageSpeed отдает скриншоты в довольно плохом качестве, поэтому они могут дать только общее представление о том, как выглядит страница при просмотре в уменьшенном виде.
Пользователь Support Vlad обновил ресурс Анализ скорости загрузки и юзабилити сайтов новой записью: Исправлена работа парсера Узнать больше об этом обновлении...
К сожалению, пресет не работает на данный момент. Отдает пустые ячейки по показателям скорости и скриншотам.
Пользователь Support Emil обновил ресурс Анализ скорости загрузки и юзабилити сайтов новой записью: Обновление 1.2 Узнать больше об этом обновлении...
как найти API key в инспекторе элементов? потратил 20 мин, не смог найти также хотелось бы понять как рассчитывается метрики Mobile и Desktop Speed?
Ознакомьтесь с документацией, парсер всего лишь использует их API: https://developers.google.com/speed/docs/insights/v5/get-started?hl=ru#key
Всем привет. часть доменов почему-то никак не обрабатываются а выдают ошибку: Код: JavaScript execution error(JS::PageSpeed::Insights, query: http://riobet-zerkala.online): SyntaxError: Unexpected end of JSON input at JSON.parse () at JS_PageSpeed_Insights.getData (files/parsers/PageSpeed-Insights/PageSpeed-Insights.js:26:25) at process.processTicksAndRejections (node:internal/process/task_queues:116:5) at async JS_PageSpeed_Insights.parse (files/parsers/PageSpeed-Insights/PageSpeed-Insights.js:9:26) at async JS_PageSpeed_Insights.__do_parse (evalmachine.:1:28748) at async Object.__processIncomingData (evalmachine.:1:15039) Хотя, в самом инструменте, в браузере - проверка проходит и результат получаю.
Пользователь Support Ilia обновил ресурс Анализ скорости загрузки и юзабилити сайтов новой записью: 1.3 Узнать больше об этом обновлении...
Пользователь Support Ilia обновил ресурс Анализ скорости загрузки и юзабилити сайтов новой записью: 1.4 Узнать больше об этом обновлении...
Добрый день. После обновления версии пресета, искомый мной домен стал отдавать результаты (riobet-zerkala.online). Но, после выяснения того, какая именно метрика собирается парсером - было выяснено, что это Speed Index Score * 100 (да, скор умножается на 100), который в принципе не отображается в результатах веб-интерфейса сервиса PageSpeed Insights. Прошу рассмотреть мою просьбу и добавить еще сбор метрики Performance. В api это score из категории performance: Код: "categories": { "performance": { "id": "performance", "title": "Performance", "score": 0.9, "auditRefs": [ А собираются на данный момент такая метрика: А еще, хочу попросить добавить опцию Disable autocorrect, по аналогии как это реализовано в парсере SE::Google
Пользователь Support Ilia обновил ресурс Анализ скорости загрузки и юзабилити сайтов новой записью: Обновление 1.5 Узнать больше об этом обновлении...
К сожалению документации PageSpeed Insights API не нашел как получить результаты по оригинальному URL. И на данный момент нет возможности повторить веб-запрос как в браузере.