Як парсити сайти в скриптах - асистент дуся

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

У скриптах Дусі є спеціальна дія «HTTP запит», за допомогою якого можна отримувати дані з будь-якого сайту, а потім робити з ними щось корисне.

Для цього потрібно зовсім небагато - навчитися користуватися CSS селекторами. І тоді залишиться лише знайти корисні сайти і зробити з них ще більш корисні голосові функції!

У статті я покажу на прикладі одного з скриптів, як використовувати CSS селектори і можливості Дусі по роботі з масивами даних.

Що таке CSS селектори

Як парсити сайти в скриптах - асистент дуся

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

CSS - це каскадні таблиці стилів. З їх допомогою описується, як ваша сторінка повинна виглядати. Тобто де який шрифт, які відступи і так далі.

CSS селектор - це вираз, який говорить парсеру сторінки, які теги потрібно «витягнути» зі сторінки. Наприклад, селектор div.my-class витягне з сторінки все теги div, у яких є CSS клас my-class.

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

Як це використовувати в скриптах

Дія «HTTP запит» вміє робити запити на будь-який URL. А потім зберегти отриманий контент в декількох змінних. Наприклад $ http_content буде зберігати весь відповідь - тобто нашу HTML сторінку.

Також, ця дія дозволяє написати один CSS селектор. який автоматично витягне текст потрібного тега в змінну $ http_html_text. Буде витягнутий текст саме з першого знайденого елемента.

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

Як парсити сайти в скриптах - асистент дуся

Є такий прекрасний сайт otzovik.com - на ньому можна написати і знайти відгуки на що-завгодно; Давайте подивимося, як можна створити дуже корисний скрипт, який за запитом буде знаходити на цьому сайті сторінку з відгуками потрібного нам товару (або навіть не товару) і відразу відкривати браузер на цій сторінці.

З чого почати

Для початку потрібно подивитися, як взагалі працює сайт.

Як парсити сайти в скриптах - асистент дуся

Як бачимо, пошук на сайті працює дійсно добре - ми можемо написати запит будь-яким чином і все одно отримати першим результатом в списку найбільш релевантний варіант.

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

Це означає, що нам просто потрібно в нашому скрипті створити дію «HTTP запит» і написати URL виду

Що будемо аналізувати довільні

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

Для цього будемо використовувати CSS селектори.

вивчаємо сторінку

Пишемо CSS селектори

Витягнемо назву товару відразу в змінну $ http_html_text. Для цього в настройках дії «HTTP запит» пропишемо CSS селектор

Це означає, що буде витягнутий текст з самого першого елемента h3 під найпершим тегом td, у якого є клас nprods. Тепер наша змінна $ http_html_text буде містити назву товару.

А змінна $ http_html_texts буде містити назви всіх товарів, знайдених за запитом. Але в нашому скрипті вони не потрібні.

Тепер цю зміну можна сміливо прописати в дії «Сказати» - і Дуся буде вимовляти назву товару, для якого зараз відкриється сторінка відгуків.

А саме - функцією «fattr» - вона приймає ім'я атрибута ( «href»), рядок з CSS селектором ( «a.arev») і власне той відповідь від сервера, який потрібно парсити ( «$ http_content»). І повертає текст самого першого знайденого елемента. У нашому випадку це буде рядок типу «/ reviews / apple_ipad_2 /».

Пропишемо це в дії «Зберегти змінну» і дамо змінної яке-небудь ім'я, наприклад «href».

Все готово!

В результаті

У нас вийшов скрипт, який автоматично витягує на наш запит потрібні нам дані, озвучує їх і відкриває браузер там, де потрібно. Швидко і зручно! Саме так, як повинен діяти голосовий асистент - допомагати користувачу знаходити потрібну інформацію тільки за рахунок голосу.

Як парсити сайти в скриптах - асистент дуся
CSS селектори і функції attr, fattr, css і fcss - це ті інструменти в арсеналі скриптів Дусі, які дозволяють реалізовувати такого роду функції без особливих зусиль. Тим часом будь-який парсинг сторінки - це в першу чергу дослідження її вихідного коду. Не забувайте про це - і тоді ваші скрипти будуть по-справжньому корисними!