Дополняемое и обновляемое руководство по языку программирования Python, в котором разбираются задачи в различных областях.

Если вы хотите дополнить данное руководство – напишите мне через форму обратной связи на странице контактов. Спасибо.

Парсим JSON на Python

Рассмотрим как парсить JSON на Пайтоне. JSON – это легковесный формат обмена данными.

Сначала мы загружаем JSON файл с помощью метода json.load(). В результате получается словарь на Python. Затем мы можем получить доступ к полям с помощью методов словаря.

Чтобы извлечь информацию из JSON-файла или JSON-ответа, мы должны разобрать данные.

Загрузка JSON

В нашем примере мы будем использовать следующий JSON:

{
   "store":{
      "book":[
         {
            "category":"reference",
            "author":"Nigel Rees",
            "title":"Sayings of the Century",
            "price":8.95
         },
         {
            "category":"fiction",
            "author":"Evelyn Waugh",
            "title":"Sword of Honour",
            "price":12.99
         }
      ],
      "bicycle":{
         "color":"red",
         "price":19.95
      }
   },
   "expensive":10
}

Первый шаг – это загрузка JSON-файла в Python:

import json

with open('store.json') as json_file:
    data = json.load(json_file)
print(data)

JSON-файл теперь хранится в переменной data.

Метод print просто выведет указанный выше JSON.

Примечание: вышеприведенный метод будет хранить JSON как словарь Питона. Мы можем проверить это, выведя тип, print(type(data)).

Извлекаем конкретные данные из JSON

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

Например, чтобы получить цену велосипеда в вышеуказанном JSON, мы бы использовали:

print(data['store']['bicycle']['price'])

Выведет:

19.95

Извлечение данных из массива JSON

В приведенном выше примере JSON поле “книга” (book) представляет собой массив JSON.

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

Например, чтобы получить название второй книги, мы будем использовать:

print(data['store']['book'][1]['title'])

Выведет:

Sword of Honour

Условный парсинг JSON

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

Тогда мы бы использовали:

books = data['store']['book']
for book in books:
    if book['price'] <= 10.00:
        print(book)

Выведет:

{'category': 'reference', 'author': 'Nigel Rees', 'title': 'Sayings of the Century', 'price': 8.95}

В этой статье мы рассмотрели, как парсить JSON в Python. Ключевым моментом здесь является то, что после загрузки JSON-файла он хранится в виде словаря на Python.

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

Введение в Python Flask Фреймворк

Начните с Flask, фреймворка для веб-разработки основанного на Python, и узнайте, как вы можете использовать его в своих проектах IoT (прим. – Интернет вещей).

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

Хотя Python хорошо известен своими возможностями анализа данных и машинного обучения, он также используется для работы на некоторых крупнейших веб-сайтах в Интернете, включая Reddit, Netflix, Pinterest и Instagram.

Django или Flask?

Если вы хотите попробовать себя в веб-разработке на Python, сначала нужно выбрать между двумя фреймворками: Flask или Django. Они оба делают одно и то же – они конвертируют ваш код Python в полнофункциональный веб-сервер.

Flask – это минималистская версия, в которой все, что вы можете выбрать, является дополнением, тогда как Django поставляется со всем уже «подключенным» и имеет предопределенные библиотеки, методы и технологии, которые вы сможете использовать «из коробки».

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

Установка Flask

Как и большинство библиотек Python, установка фреймворка очень простая – установите его с помощью pip:

$ pip install Flask

На этом все. Можно идти дальше.

Клиент и Сервер

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

Клиент является веб-браузером, таким как Google Chrome или Firefox. Когда вы вводите веб-адрес и нажимаете ввод, вы отправляете запрос на сервер, который будет «обслуживать» нужный веб-сайт.

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

Flask – это серверный фреймворк или «бэкэнд», как его часто называют. Вы программируете фрагмент кода, который получает запрос, создает веб-страницу, а затем отвечает необходимым HTML (и необязательными CSS и JavaScript).

Дисциплина разработки на стороне клиента или «front-end» связана с тем, как веб-сайт ведет себя в браузере после его получения с сервера. Мы не будем заострять на этом внимание, поскольку разработка на стороне клиента в основном выполняется только на JavaScript.

Ваше первое веб-приложение на Flask

Давайте начнем с давней традиции – с «Hello World».

Оговоримся, что этот пример является слегка измененной версией приложения “Hello World” в документации Flask.

from flask import Flask     # Import Flask
app = Flask(__name__)       # Create a Flask "app" instance


@app.route("/")             # Instructs that the default url of http://127.0.0.1:5000/ should trigger this code
@app.route("/index")        # Instructs that the url of http://127.0.0.1:5000/index should also trigger this code
def index():
    return "<h1>Hello World!</h1>"          # The HTML to return to the browser


if __name__ == '__main__':                  # Startup stuff
    app.run(host='127.0.0.1', port=5000)    # Specify the port and url

Запустите код, затем перейдите в Google Chrome (или в свой браузер) и введите «http://127.0.0.1:5000/» без кавычек. Вы должны увидеть восхитительный «Hello World», который приветствует вас в мире веб-разработки.

Масштабируемая структура для веб-приложений Flask

Хотя весь код в одном файле является быстрым и увлекательным введением в Flask, вам, вероятно, захочется разбить код на отдельные файлы, чтобы сделать его более управляемым.

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

Эта структура имеет скрипт «start.py», который вы запускаете для начала работы вашего веб-сервера. Весь код Python находится внутри папки с именем «code». В этой папке находится ваш файл «routes.py». Он содержит определения для запроса веб-адресов и того, как ваше приложение реагирует на них.

Если у вас есть какая-либо логика Python, такая как вычисление статистики или моделей машинного обучения, они также должны находиться внутри папки «code».

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

Папка «static» содержит код, такой как CSS и Javascript, который не изменяется во время выполнения.

Настройка развертывания

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

Во-первых, нам нужно настроить порт, на котором представлен ваш сайт. Мы хотим установить для хоста «host = 0.0.0.0», а для порта «port = 80». Установка хоста и порта делает ваш сайт видимым на IP-адресе вашего хост-компьютера.

Например, если вы запускаете веб-приложение Flask на Raspberry Pi с IP-адресом 192.168.1.10, вы можете перейти к этому IP-адресу в веб-браузере на отдельном компьютере, и вы увидите, что ваша веб-страница обслуживается. Это отличная основа для проектов IoT и live панелей датчиков.

Мы определяем «port = 80», так как это порт по умолчанию для связи по протоколу HTTP. Когда вы запрашиваете URL в вашем браузере по HTTP, он знает, что нужно перейти на порт 80, поэтому вам не нужно явно указывать его в веб-адресе.

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

Следующие шаги или что дальше

Если вы хотите глубоко погрузиться в веб-разработку Flask, я настоятельно рекомендую курс “Flagk Mega Tutorial” от Мегеля Гринберга. Он очень подробный и является бесценным источником для изучения Flask.

Следим за конкурентами с помощью Python и Data Studio

Используем Python для автоматизации SEO процессов и отслеживания конкурентов с помощью Питона и Data Studio.

В чем суть?

Независимо от того, являетесь ли вы новичком в SEO или опытным специалистом, изучение падения позиций ключевых слов — это только одна часть профессии.

Существует множество способов определения причины, почему ваши целевые ключевики могут потерять свои позиции, но использование Python и Data Studio в корне меняет положение дел!

Быстрое заявление об отказе: я не создавал этот скрипт. Я сотрудничал с SEO специалистом и разработчиком, Эваном из компании «Architek», чтобы решить конкретную проблему, которая у меня была. Эван был мозгом при создании скрипта.

Я всегда хотел иметь возможность просматривать большое количество результатов Google, без необходимости поиска каждого вручную. Эван упомянул, что Python может быть идеальным решением для решения задач в области SEO-анализа.

Почему Python представляет интерес для SEO?

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

Одна из самых крутых вещей в Python — это несколько разных способов выполнения одной и той же задачи. Однако это делает его немного сложнее. Большинство примеров скриптов Python могут быть немного устаревшими, поэтому вы будете изучать все методом проб и ошибок.

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

Чтобы быть в курсе последних вариантов использования Python в SEO, Гамлет Батиста опубликовал несколько замечательных статей здесь, в Search Engine Journal.

Что делает и не делает этот конкретный скрипт

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

Этот скрипт Python выполняет одну индексацию во время запуска с вашего IP-адреса. Этот скрипт не предназначен для отслеживания рейтинга ключевых слов.

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

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

Так почему это важно?

В этом случае мы не влияем на эффективность страницы на долгое время. Мы просто пытаемся получить оперативные данные.

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

Что нужно для начала работы?

Если вы новичок в Python, я рекомендую ознакомиться с официальным руководством по Python или автоматизацией скучных вещей.

Для этого учебного руководства я использую PyCharm CE, но вы можете использовать Sublime Text или любую другую среду разработки.

Этот скрипт написан на Python 3 и может быть немного сложным для новичков в этом языке программирования.

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

После настройки нового виртуального окружения вам потребуются следующие библиотеки:

  • urllib
  • lxml
  • requests

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

1. Составьте список ключевых слов для исследования

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

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

  • Полезные советы по SEO
  • Локальная SEO консультация
  • Изучение SEO
  • Статьи по поисковому продвижению
  • SEO блог
  • Основы SEO
Внимание! Поиск слишком большого количества ключевых слов может привести к тому, что ваш IP будет временно заблокирован. Слишком много одновременных запросов к Google могут оказаться спамом из-за превышения лимитов. Используйте с осторожностью и без фанатизма.

Первое, что мы сделаем, это поместим эти ключевые слова в простой текстовый файл searches.txt. Ключевые слова должны быть разделены переносом строки, как показано на скриншоте ниже.

2. Запуск скрипта исследования позиции Python

Вкратце, этот скрипт выполняет три основных функции:

  • Находит и открывает ваш файл searches.txt.
  • Использует эти ключевые слова и ищет первую страницу Google для каждого результата.
  • Создает новый CSV файл и печатает результаты (ключевое слово, URL-адрес и заголовки страниц).

Чтобы скрипт работал правильно, вам нужно будет запустить его по разделам. Во-первых, нам нужно будет сделать запрос к нашим библиотекам. Скопируйте и вставьте код ниже.

from urllib.parse import urlencode, urlparse, parse_qs

from lxml.html import fromstring
from requests import get
import csv

Далее вы сможете ввести основную функцию scrape_run() этого скрипта одним действием копирования/вставки.

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

def scrape_run():
    with open('searches.txt') as searches:
        for search in searches:
           userQuery = search
           raw = get("https://www.google.com/search?q=" + userQuery).text
           page = fromstring(raw)
           links = page.cssselect('.r a')
           csvfile = 'data.csv'
           for row in links:
               raw_url = row.get('href')
               title = row.text_content()
               if raw_url.startswith("/url?"):
                   url = parse_qs(urlparse(raw_url).query)['q']
                   csvRow = [userQuery, url[0], title]
                   with open(csvfile, 'a') as data:
                       writer = csv.writer(data)
                       writer.writerow(csvRow)

Теперь вы можете запустить команду. Последний шаг — скопировать/вставить команду ниже и нажать клавишу ввода.

scrape_run()

Готово!

3. Используйте Data Studio для анализа результатов

Запустив эту команду, вы можете заметить, что был создан новый CSV-файл с именем data.csv. Это ваши необработанные результаты, которые нам понадобятся на последнем этапе.

Мое агентство создало удобный шаблон Data Studio для анализа ваших результатов. Чтобы использовать этот бесплатный отчет, вам нужно вставить свои результаты в Google Sheets.

На странице, приведенной выше по ссылке, есть подробные инструкции по настройке отчета Data Studio.

Как проанализировать наши результаты?

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

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

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

Как вы можете видеть на скриншоте Data Studio выше, Moz и Ahrefs являются двумя конкурентами, ранжирующими наши ключевые слова.

Однако это не помогает нам точно определить, что они делают для ранжирования по этим ключевым словам.

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

Нужно отфильтровать до определенного уровня страницы или ключевого слова?

Мы включили фильтры в верхней части шаблона Data Studio, чтобы упростить этот процесс.

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

Застряли?

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

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

Установка matplotlib

Рекомендации по установке библиотеки matplotlib построения графиков в Python 3 с учетом установленной системы Windows XP.

Недавно я решил использовать Python для решения своей прикладной задачи по обработке сигнала с микрофонного входа. Поскольку раньше с Питоном не работал, то начал с его установки. Версия 3.4.1 была найдена легко и прекрасно стала на немолодой ноутбук Toshiba с Windows XP сборки sp3. Библиотеку для записи звука sounddevice скачал из обширного хранилища PyPI.

Там же легко нашел и затем установил библиотеки numpy и scipy. Numpy необходимо установить перед matplotlib. Да, библиотека matplotlib, чуть не забыл сказать, служит для построения всевозможных графиков, она очень похожа на функцию plot из MatLab. Потому я библиотеку и выбрал, так как раньше в MatLab работал.

А дальше начались проблемы. Неоднократные попытки устанавливать обычным порядком различные версии matplotlib заканчивались сбоем на последнем этапе. Да, по поводу обычного порядка еще скажу, будет полезно для начинающих. Делал это так:

  1. После того, как на PyPI находилась библиотека, копировал строку установки, которая выглядела так pip…, в буфер кнопкой из этой же строки.
  2. После этого в командной строке Windows устанавливал текущей папку Script из папки Python34. Это потому, что в этой папке хранится установщик с именем pip. Делал это вводом строки: >cd/d c:\Python34\Script.
  3. Далее жал «Enter» и теперь уже вставлял в командную строку то, что скопировал в буфер на PyPI. После снова «Enter» и ждал результата окончания установки.

Возвращаясь к matplotlib, скажу, что завершились без результата и попытки установки из whl файла. Все было плохо, пока не нашлась ссылка на exe файл версии 1.3.1, скачал, установил его в папку Lib Питона, запустил.

Но и это было еще не все!

В ошибке прозвучало требование dateutil! Что это? Ни в одной из «умных» и «обстоятельных» статей, которые я читал в Интернете перед этим, похожих слов точно не звучало!

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

  • dateutil 2.7.3;
  • pyparsing 2.2.0;
  • six 1.11.0;
  • pytz 2018.5