Сообщество - Web-технологии

Web-технологии

534 поста 5 789 подписчиков

Популярные теги в сообществе:

56

Парсинг интернет магазинов

Наконец дошли руки написать обещанный пост про парсер сайтов. Главное условие для нашего парсера, чтобы сайт был открытый и не требовал авторизации (в принципе 98% интернет магазинов).

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


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


function getconten() {

for(var j=1;j<=68;j++){

getPageContent(1+10*(j-1),"https://cleanshop.ru/catalog/spbd/?start="+j)

}}


function getPageContent(startRow,url) {

var sheet = SpreadsheetApp.getActiveSheet();

var range = sheet.getRange("A2:I5000");

var cell = range.getCell(startRow,1);

var response = UrlFetchApp.fetch(url);

var textResp=response.getContentText();

var start,end,name;

for (var i=1;i<=10;i++){


//фото

start = textResp.indexOf('<table class="good_img">',end)+24;

start = textResp.indexOf('src="',start)+5;

end = textResp.indexOf('"',start);

name = textResp.substring(start,end);

cell.setValue(name);

cell=cell.offset(0,1);


// цена

start = textResp.indexOf('</td></tr><tr><th>',end)+18;

end = textResp.indexOf('</th></tr></table>',start);

name = textResp.substring(start,end);

cell.setValue(name);

cell=cell.offset(0,1);


//название

start= textResp.indexOf('<div class="good_text">',end)+23;

start= textResp.indexOf('class="good_title">',start)+19;

end=textResp.indexOf('</a>',start);

name =textResp.substring(start,end);

cell.setValue(name);

cell=cell.offset(0,1);


//код

start = textResp.indexOf('Код: ',end)+5;

end = textResp.indexOf(' | ',start);

name = textResp.substring(start,end);

cell.setValue(name);

cell=cell.offset(0,1);


// описание

start = textResp.indexOf('<p>',end)+3;

end = textResp.indexOf('</p>',start);

name = textResp.substring(start,end);

cell.setValue(name);

cell=cell.offset(0,1);


cell=cell.offset(1,-5);}}


Шаг 1: Создаем документ на Google тут или тут;

Шаг 2: Кликаем в меню по пункту "Инструменты" затем на "Редактор скриптов", у нас откроется новая вкладка.

Шаг 3: В открытое окно вставляем наш скрипт.

Шаг 4: Запуск скрипта для начала нужно выбрать функцию getcontent. затем нажать кнопку запуска (серая стрелка, станет черной после выбора функции).

После этого в документе мы увидим подобное:

Теперь основные комментарии к коду:

Мы имеем 2 функции getconten и getPageContent , из getconten мы передаем нужные данные и запускаем функцию для getPageContent для парсинга страницы которую мы передали из getconten.

Функция getconten: здесь мы имеем цикл равный количество страниц в данном разделе. За каждый проход цикла мы отправляем ссылку на страницу и кол-во уже обработанных товаров.

И так какую же ссылку нам вставить для нашего сайта? Большинство сайтов имеет подобную структуру сайт.ру/раздел/?страниц=1 под словом страница может скрываться любое слово в нашем случае start, чаще page. Иногда на первой странице сайта этой переменной нет, нужно просто перейти например на вторую. Для лучше понимая рекомендую прочитать прочитать про GET запросы тут или в google.

Формула 1+10*(j-1) - нужна для того чтобы записи шли дальше,а не перезаписывались в документе, где 10 это количество записей (!внимание! количество записей по умолчанию, для частоты лучше зайти на нужную страницу с другого браузера или с приватной вкладки тогда вы уведите страницу именно так, как видит ее ваш скрипт).

Функция getPageContent: здесь творится основная магия. Я думаю здесь стоит пояснить только основные моменты, более подробнее почитать про каждую из функций можно в гугле если заинтересует.

sheet.getRange("A1:I5000") - здесь мы выбираем диапазон ячеек, с которыми мы будем работать, рекомендую ставить большой разбег.

for (var i=1;i<=10;i++) - параметры цикла, где 10 см.формулу выше (!Внимание! цифры должны совпадать с формулой вышей).

Основные параметры мы настроили, теперь приступаем к настройке парсинга.

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

И так разбор полета пошел:

Чтобы вставить в ячейку некоторый текст со страницы нам нужно знать его начальное положение (start) и конечное (end). Для этого мы находим уникальную строку для элемента которые мы хотим спарсить, в случае с изображением товара это строка <table class="good_img"> она уникальная, ее имеет только товары при этом она имеется у каждого товара, но отталкиваясь от этой строки мы захватим слишком много, по этому находим точку еще ближе к нужной информации и уже от ее оставляем как start. Незабываем приплюсовывать количество всех символов в строке.

start = textResp.indexOf('<table class="good_img">',end)+24;

start = textResp.indexOf('src="',start)+5;

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

end = textResp.indexOf('"',start);

Далее функцией substring извлекаем нужные данные зная где они начинаются и где заканчиваются.

name = textResp.substring(start,end);

Тут просто присваиваем значению в ячейку.

cell.setValue(name); 

И перешагиваем на новый столбец, оставаясь на этой же строке .offset(Строка,Столбец).

cell=cell.offset(0,1); 


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

cell=cell.offset(1,-5);- где 5 количество столбцов на которое мы ушли или проще говоря сколько данных у товаров мы спарсили.


Теперь поговорим о его достоинствах и недостатков более подробно:

Он бесплатный, но имеет ограничений на кол-во использования обращения к сайту, вроде 12000 раз за 24 часа, для обхода вроде как надо покупать специальную лицензию ну или просто зайти с другого аккаунта.

Он полностью универсальный, да его функционал позволяет спарсить почти все тоже самое что и большая часть платных парсеров.

Не требует установки какого то софта.


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

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

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


Если мой урок не очень понятен, то советую посмотреть видео там очень доходчиво объясняют. Это мой первый пост в стиле уроков, по этому совсем сильно не бить. Надеюсь кому то этот способ сэкономит время и возможно даже деньги с учетом того, что цена за наполнения карточки товара начинается от 10р.

Так же хочу написать пост про то как с пользой использовать формулы в EXCEL для решение больших задач, если тема с excel вам интересна и у вас есть некоторые рутинные задачи пишите их в комментариях постараюсь оптимизировать с excel.

Показать полностью 5

Ищу наставника

Привет, ребят. Я новичок в верстке. Одна веб-студия дала шанс попробовать свои силы в верстке.

Дали задание сверстать простой макет для одной из страничек своего сайта.


Может быть, кто-то смог бы побыть моим наставником? Подсказать где-то советом, каким способом лучше реализовать ту или иную задачу?


Мог бы быть Вашим помощником, выполнять любые рутинные операции. Если за деньги получится выполнять заказы для студии, то готов отдавать большую часть взн-ия.


Макет скину на вашу почту.

Прошу создать расширение для браузера: "Обломатор тёмных кодеров"

Здравствуйте.

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

Прошу создать расширение для браузера: &quot;Обломатор тёмных кодеров&quot;

Меня это достало, я стал искать инструкцию как насовсем отключить эту функцию.

И не нашёл!

Ни на русском, ни на английском языке. Нашёл лишь советы пидарасо-кодеров, о том, как убрать ещё и тот чекбокс с запретом для этого сайта создавать новые отвлечения, и насовсем заблокировать закрытие вкладки в некоторых версиях браузеров. А ещё подробные инструкции как такие окошки создавать и ставить на сайты.

Я пробовал добавить свой фильтр в адблок, но это не сработало.

Я искал в хроме расширения для этого - и тоже не нашёл. Только полная блокировка скриптов, а это иногда мешает.

В общем, я в отчаянии.

И теперь, я прошу кодеров светлой стороны создать простенькое расширение, блокирующее это говно.

Я так понимаю надо просто отключить функции: promot, alert, confirm, onunload, и тому подобные. И раз пошла такая пьянка, ещё добавить блокировку кодов popup, и всякие там promt register, ну и прочие ублюдочные средства выкручивать руки пользователям и пихать в лицо требования.

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

Прошу в комментариях светлых кодеров, которые согласятся попробовать, написать что вы согласны попробовать, я подпишусь на вас, чтобы дождаться этого расширения.

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

Большое спасибо за ваше внимание.

Показать полностью
170

Книги по JavaScript

1. Современный учебник JavaScript


Автор: Илья Кaнтop


Год : 2015

https://drive.google.com/open?id=0Bw1tpOoY9MYrcmpOb2VoYWJWZ2...

_______________


2. Выразительный Javascript, 2-е издание


Автор: Marijn Haverbeke


Год : 2015

https://drive.google.com/open?id=0Bw1tpOoY9MYrTk11SjFKdDYwSG...

_______________


3. JavaScript. Сильные стороны


Автор: Крокфорд Дуглас


Год : 2012

https://drive.google.com/open?id=0Bw1tpOoY9MYrWjdtMzNzaHNaVX...

_______________


4. JavaScript. Шаблоны


Автор: Стоян Стефанов


Год: 2011

https://drive.google.com/open?id=0Bw1tpOoY9MYrazEtLTA3c1pVNj...

_______________


5. JavaScript. Подробное руководство, 6-е издание


Автор: Дэвид Флэнаган


Год: 2012

https://drive.google.com/open?id=0Bw1tpOoY9MYrSnNKRE1qM21Lbz...

_______________


6. JavaScript. Карманный справочник


Автор: Флэнаган Дэвид


Год : 2013

https://drive.google.com/open?id=0Bw1tpOoY9MYrXzNoLVBDWmloTE...

Показать полностью
12

Переход на https. SSL-зация сайта. Часть 1 - Вводная

Переход на https. SSL-зация сайта. Часть 1 - Вводная

Краткая хронология:
В августе 2014 Google заявляет о том, что безопасность пользователей для компании один из главных приоритетов и https-сайты, могут рассчитывать на дополнительный бонус при ранжировании.

В декабре 2015 года Google начинает по-умолчанию индексировать  HTTPS-версию страницы, если сайт доступен для индексации по обоим протоколам: http и https.

В январе 2016 года Google сообщает, что даже те HTTPS-сайтаы, которые косячно перешли на https - получают бонус в ранжировании.

С января 2017, браузер Chrome 56 начнет помечать все HTTP-сайты, которые передают личные данные пользователей, как сомнительные, гугл об этом пишет в своём блоге.

Пока это страницы, где требуется ввод пароля (страницы логина/регистрации) или данных карты, но со временем все http-сайты будут помечаться как НЕбезопасные.


Так же Google в Google Search Console начал рассылать предупреждения о том, что на вашем сайте n-ные страницы признаны небезопасными.


Переходить или нет?

Переход на https критически важен для сайтов с конфиденциальной и личной информацией, с платёжными данными, это например, интернет-магазины.

Остальные сайты, в принципе, могут пока не париться.

Лично по моему мнению, переходить нужно всем, связано это не с паранойей, а с тем, что всё же, наличие https рано или поздно точно станет фактором ранжирования, можно будет собрать сливки по конкурентам.


Конкретно в моей тематике, есть уже два сайта аутсайдера, они прикрутили сертификат крайне криво. Умный читатель догадается куда ушла трафика с них.


Виды сертификатов

-С проверкой домена (DV или Domain Validated)

Подходит для физиков и юриков. Защищает только домен и гарантирует только то, что соединение с сайтом защищено. Стоит дешево, иногда даже бесплатно, максимум, что требуется для подтверждения - принять письмо или разместить на сайте текстовый файл или метатег.Получается быстро


-С проверкой организации (Organization Validated или OV)

Такой сертификат дают только юрикам или ИП, ну и госорганам, хотя они тоже к юрикам скорее относятся.

Проверяют документы, существование юрлица и права на домен.

Домен проверяется как в пункте выше, юрлицо могут пробивать вплоть до наличия во всяких разных справочниках "Жёлтых страницах", возможно, что это байка.

Получение данного сертификата это 1-3 дня, примерно. Если доки в порядке.


-С расширенной проверкой организации (Extended Validation SSL (EV SSL))

Это самый дорогой вариант сертификата. Проверяют всё и проверяют тщательно.
Из бонусов - название организации слева от адресной строки, а не просто зелёный замочек.

Обычно используется банками, платежными системами, крупными интернет-магазинами


Дополнительные фичи сертификатов

-Обычный сертификат - на один домен или субдомен, www входит по умолчанию. Отдельно для него не нужно приобретать.

-Wildcard - для нескольких субдомен одного домена

-С поддержкой IDN - для кириллических доменов, мерзость.рф, личная антипатия.

-Мультидоменный сертификат - выдаётся на несколько доменов одной организации


Сертификаты продаются на срок 1-3 года, как правило, если у вас не школохост, то можно у хостера приобрести сертификат,обычно, при покупке хостер его сам и устанавливает. Если у вас виртуальный хостинг. На VPS и дедиках могут и отказать, сказать, что за отдельную плату.


Раньше для https требовался выделенный IP, нынче, технологии дошли до того, что можно сидеть на общем IP и иметь сертификат. Технология называется SNI и поддерживается любым современным браузером, с седьмого ишака, кажись.


Продолжение следует

Показать полностью 1
0

Нужна оценка первого сайта и совет!

Привет Пикабушникам! Три недели назад я начал осваивать азы веб-разработки, и вот пару дней назад я сделал свой первый сайт. Очень простой одностраничник. Цель была закрепить хотя бы базовые знания вёрстки. В коде только html и css. Чуть позже буду учить JS. Кому не лень посмотрите, пожалуйста, сайт. Принимается любая критика, особенно интересны мнения и комментарии от веб-разработчиков. И ещё... у меня не получается сверстать его для мобильных телефонов. Через свой телефон открываю, два блока опускаются вниз. Может у кого будет по-другому дизайн сыпаться. Спасибо за внимание, буду очень признателен!

Ссылка на сайт https://baevdantes93.github.io

8

Небольшой UserScript облегчающий жизнь

Опять о рекомендованном в Ютуб.


Надоело всякое лезть на главную Ютуб, просто достало. Решил вчера написать небольшое расширение, которое помогает удалять видео из рекомендованного.

Предисловие


Ну вот что тут можно смотреть? Я не знаю откуда лезут все эти тимоти, дети и бои, а ещё фильмы про войну, танки и прочие игры.


У меня в подписках преимущественно рыбалка, гитара и металл группы, ну пару Денди/Сега каналов. Если к Денди ещё можно притянуть танки, то не понятно откуда лезет Тимати.


Как видно из скрина - у меня даже не все 18 видео разом, потому что часть каналов заблокирована VideoBlocker'ом. Иногда и вообще пустое, то Ютуб пихает все 18 видео, которые уже заблокированы! Я честно завидую тем, у кого "рекомендованное" то, что им нравится.


О скрипте


Данный скрипт позволяет в один клик скрывать всё это. Как видно на скрине добавил кнопку "Удалить", которая за вас выполняет ряд действий: выбирает скрыть и потом пункты "Мне оно не понравилось" и "Мне не интересен канал".


Нет, это не поможет от нового рекомендованного шлака, но больше не надо совершать много действий, чтобы скрыть видео.


Также есть кнопочка "Удалить всё", чтобы удалить всё в один клик.

Установка


Для пользователей Хрома и ему подобных - надо просто скачать файл youtube_recommended.user.js, перейти в Настройки -> Расширения и перетащить файл на эту страницу.

Для других браузеров, и тоже для Хромоподобных подходит - поставьте расширение Greasemonkey, Tampermonkey или аналогичное и загрузите в это расширение данный файл или код файла. Надеюсь справитесь, если нет, то подскажу в комментариях.


Тест проводился только на себе, поэтому могут быть проблемы. Спрашивайте в комментариях.


Из недоработок пока следующее


- Скрипт срабатывает только на https://www.youtube.com/, другие страницы специально не добавлены, поэтому если у вас будет страница типа https://www.youtube.com/?hl=ru&gl=RU - надо лишнее удалить.

- Скрипт не всегда полностью отрабатывает (см. ниже про настройки) и не отправляет форму, а только скрывает, поэтому иногда надо нажать второй раз, чтобы произошло полное удаление.


Настройки


В скрипте предусмотрены пару настроек, которые может изменить каждый под себя.

1) Это время срабатывания. Если вы видите, что у вас очень часто не до конца срабатывает скрипт, то найдите в файле строку

},1000); // Время задержки

И увеличьте число. Это цифра в миллисекундах. И наоборот, если срабатывает всегда, то можете уменьшить, но по личному опыту не рекомендую ставить меньше 100.


2) Выбрать пункты формы

// inputs[0].checked = true; // Я смотрю его не первый раз.

inputs[1].checked = true; // Мне оно не понравилось.

inputs[2].checked = true; // Мне не интересен канал...

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


Послесловие


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

Показать полностью 2
Отличная работа, все прочитано!