CoderCastrov logo
CoderCastrov
Парсер

Black Mirror: кодируй будущее I - Данные

Black Mirror: кодируй будущее I - Данные
просмотров
3 мин чтение
#Парсер
Table Of Content

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

    Кратко говоря, эту тему исследует британский научно-фантастический сериал Black Mirror. Большинство эпизодов происходят в дистопических обществах ближайшего будущего и представляют собой воображаемые последствия различных воздействий новых технологий на людей. Почти каждый эпизод оставляет горький привкус. Один из эпизодов, который был не так просто посмотреть, это Be Right Back, первый эпизод второго сезона.

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

    Давайте разобьем проблему на части. Во-первых, им понадобились данные человека, чтобы создать личность для своего продукта. Во-вторых, им понадобилось программное обеспечение для общения. И, наконец, чтобы обеспечить телефонные звонки с роботом, им понадобились и аудиоданные, и программное обеспечение для распознавания речи и произношения. В первой части мы обсудим сбор данных.

    В сериале предполагается, что они использовали посты в Facebook и Twitter, чтобы имитировать их манеру речи: выражения, словарь, даже чувство юмора. Для извлечения данных с веб-сайтов может понадобиться программное обеспечение, называемое парсер веба. Парсинг веба представляет собой действие сбора данных с веб-сайта. Их относительно легко создать, и существует много продвинутого парсерного программного обеспечения. Лучший способ понять, как что-то работает, - это создать это самому, поэтому мы можем написать простой парсер Twitter на Python. Цель следующего парсера - извлечь твиты, написанные официальным аккаунтом сериала Black Mirror, и вывести их на консоль.

    Есть инструменты, которые облегчают парсинг. Например, Selenium - очень полезный фреймворк для веб-приложений. Хотя он не используется в нашем парсере, я нашел Beautiful Soup очень удобным при работе с разбором HTML-кода. Сначала нам нужно предоставить способ прокрутки страницы при поиске твитов и таймер, который будет периодически приостанавливать наш скрипт. Это должно быть сделано, потому что мы не хотим нагружать сервер: он должен иметь возможность отвечать на запросы других пользователей.

    import time
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys

    Затем мы должны указать наш браузер и ссылку на страницу Twitter, с которой мы хотим извлечь данные. Наш URL будет URL'ом целевого аккаунта, как показано в коде ниже. В противном случае, если мы хотели бы сделать парсинг из результатов поиска, мы бы искали "blackmirror" и использовали полученный URL для нашего скрипта.

    browser = webdriver.Chrome()
    addr = u'https://twitter.com/'
    query = u'%40blackmirror&src=typd'
    url = addr + query
    browser.get(url)

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

    time.sleep(1)

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

    body = browser.find_element_by_tag_name('body')
    for _ in range(5):
        body.send_keys(Keys.PAGE_DOWN)
        time.sleep(0.5)

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

    tweets = browser.find_element_by_class_name("js-tweet-text-container").text
    for tweet in tweets:
        print(tweet)

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

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