Разработка интернет-приложений
Подписаться на эту рубрику по RSS
Человек, который открыл бизнес в Сети, активно занимается решением вопросов по созданию сайта и зачастую старается выполнить ряд задач самостоятельно или находит того, кто сделает это недорого. Экономия рано или поздно доставляет массу проблем, приходится платить немалые деньги.
Здравствуйте, здравствуйте и еще раз здравствуйте! Сегодня хотелось бы посвятить вас в такую тему, как разбор разметки страниц html, используя для этого Python+lxml. На самом деле, это не так сложно, как кажется, поэтому вы с легкостью сможете обуздать довольно простые правила касательно этого процесса. Что такое lxml? Это удобная в работе библиотека, которая позволяет обрабатывать разметку, как html , так и xml, при помощи языка Python. Стоит также отметить ее уникальную способность разбития частей документа в дерево. Итак, приступим.
Какую цель вы будете преследовать, создавая парсинг?
Сейчас многие занимаются различными видами спорта, поэтому в качестве примера возьмем данную тематику. Предположим, что нас заинтересовало количество совершенных болевых приемов, которые были зафиксированы в момент проведения мировых турниров по ММА. Недолго думая, я воспользовался гуглом и смог подыскать для себя подходящий сайт, где мне удалось получить доступ к требуемым данным. Она подразумевает собой полную информацию по всем проведенным турнирам в категории смешанные единоборства.Правда, нельзя не упомянуть про один важный нюанс: предоставленную информацию было крайне сложно анализировать. Получается, что статистика для всех турниров находилась не на одной странице, а была разбита на несколько частей, каждая из которых была на разных страницах, что и причиняет главный дискомфорт. Это же можно сказать и про возможность удобного просмотра названия турнира, а также дату его проведения. Для того, чтобы не клацать по сто раз по разным страницам и запоминать информацию на них, будет разумно создать специальный парсер, который в значительной степени облегчит процесс анализа всех данных.
Недавно столкнулся с задачей обеспечить клиента сервером с большим объемом RAM, но с ограниченным количеством дисков. По техническому заданию сервер должен быть способным передавать в Интернет данные со скоростью 10-15 Гбит в секунду. Раньше для этой цели мы покупали сервера HP DL180 G6, имеющий размер 2U и 25 под HDD/SSD. Но сейчас задача стояла немного другая, и мы решили испытать новый HP Proliant DL 160, 8-го поколения.
Некоторые данные о HP DL 160 G8:
- 24 слота для памяти DDR III;
- 8 × 2,5” HDD/SSD;
- поддержка до 384 Гб RAM;
- контроллер новой модели Р420 – 1 Гб памяти и BBU;
- возможность добавления дополнительного NIC-модуля, не занимая при этом слота PCLe (к примеру, с портами 10 Гбит/сек);
- полно размерный слот PCLe X16.
Веб-программирование в Python. Создание и запуск сайтов на Python
Язык программирования Python широко применяется для создания web-сайтов и используется для решения различных проблем и задач которые возникают перед программистом. Во-первых, код на языке программирования Python предоставляет простые и удобные методы для генерирования набора статических HTML-страниц, которые будут обслуживаться веб-сервером. Например, сценарии может принимать некоторое содержимое и добавлять к нему элементы оформления, типичные для веб-сайта (панель навигации, боковую панель, рекламу, стили и так далее). Все это фактически сводится к работе с файлами и обработке текста.
Во-вторых, скрипты написанные на языке программирования Python могут применятся для создания динамических сайтов т.е. в связке MySQL + JavaScript + Ajax + Python. Сайт может работать на базе обычного веб сервера Nginx или Apache и отправлять данные из форм сценарию на языке Python для обработки и возвращение результата работы. В данном случае Python используется как обработчик данных из форм.
Python очень легкий язык программирования с низким порогом вхождения. Те программисты которые уже знают любой другой язык программирования будь то PHP, Java или C подобные языки, то понимание языка Python будет намного выше. Ассоциируя уже имеющие знания другого языка программирования с новыми функциями и модулями Python, вы легко смоете понять логику работы Python. В сравнении с PHP, Python не выполняет только одну задачу. Он применяется в разных отраслях, таких как создание программ, приложений в смарфоне, игр и сайтов.
По скорости работы и выполнения тех же задач, Python и PHP работают практически одинаково. Дальнейший выбор на каком языке программирования делать сайты это дело вкуса. В изучении Python есть больше плюсов нежели в программировании на PHP. Согласен, на PHP вы создадите сайт за несколько минут, но в Python вам придется изучить хотя бы основы языка потом уже понять как работают его фреймворки для создания сайтов.
В Интернете можно найти большое количество статей, в которых рассказывается о различных способах интернет-заработка, получении пассивного дохода от владения веб-сайтами и т.д. Многие, прочитав подобную заметку, всерьез начинают задумываться о создании веб-сайта – своими силами или на заказ.
Разработка и создание сайтов своими силами потребует владения языками программирования и различными программами, интернет-технологиями. Если заказывать выполнение работ такого типа в компании или у частного исполнителя, то изучать сложности веб-программирования не понадобится, зато потребуется потратить некоторое время на ожидание результата.
Популярная услуга - разработка и создание сайтов, часто имеет завышенную стоимость, так как во многих IT-компаниях в нее также могут включать комплекс работ по продвижению и требовать от клиентов предоплаты.
В практике любого программиста наступает задача скопировать некий материал с сайта. Так как страниц достаточно много не стоит терять время на ручное копирование. Ведь, языки программирования нужны для того чтобы избавится от рутинной работы и автоматизировать разные задачи. В Python есть отличная библиотека для работы с HTML. С ней можно парсить не только сайты но и обычные html документы. Хорошим преимуществом данной библиотеки является персональный алгоритм структурирования HTML кода, что позволяет программисту сэкономить время работы.
Но, проблемы в работе с html документами могут все равно появляться. HTML не имеет строгую структуру кода и некоторые верстальщики дают волю фантазии и изобретают свою структуру кода. Могут возникнуть и проблемы с кодировкой, что создаст новые проблемы для структурирования кода и получения данных.
Мы не будем воровать контент с других сайтов чтобы продемонстрировать библиотеку в работе, примеры будем делать на нашем сайте. Администрация pythonworld, поблагодарит нас за это и пойдем дальше.
Установка библиотеки Beautiful Soup (Linux)
$ apt-get install python-bs4
$ apt-get install python-lxml
$ apt-get install python-html5lib
Библиотека Beautiful Soup предназначена для работы с Python 2, но так же умеет работать с кодом Python 3. После установки и python-html5lib, можно будет парсить и современные документы стандарта HTML5.
Клиентская часть в Python реализуется при помощи модуля ftplib. Использовать непосредственно данный модуль на практике приходится не так часто, в связи с тем, что есть другой модуль urllib, имеющий более высокоуровневый интерфейс. Модуль ftplib может пригодится когда в вашей программе необходим более обширный контроль над низкоуровневыми FTP соединениями. Для более понятной работы с модулем ftplib советуем поближе изучить протокол FTP.
Модуль определяет единственный класс, используемый для создания FTP-соединения:
con = FTP(хост, ftp-пользователь, пароль пользователя, учетная запись, время ожидания)
После вызова класса FTP, создается объект представляющий FTP-соединение. Первый аргумент хост является обязательным в нем передается имя хоста, это может быть IP или название домена. Остальные параметры являются необязательными, если хост не требует введение аутентификационных данных.
Вызывая класс без аргументов, чтобы установить соединение, потребуется вызвать метод connect() и login(). При указании лишь аргумента хост, метод connect() будет вызываться автоматически в конструкторе. Тот же случай при указании данных пользователя сразу при вызове класса FTP, метод login() будет вызван автоматически. Последний аргумент "время ожидания" указывается в секундах, если по истечению данного срока соединение не будет установлено класс закончит работу.
Методы класса FTP
con.abort()
Отправляет запрос для прерывания попытки продолжающуюся передачу файлов. В зависимости от настроек и особенностей удаленного сервера, результат данного метода может не дать нужного результата
con.close()
Закрывает FTP-соединение. После выполнения данного метода, никакие операции больше не могут выполнятся в сторону объекта con.
con.connect(хост, порт, время ожидания)
Открывает новое FTP соединение для указанного хоста, подключаясь к указанному порту (обычно это порт 21 или в случае SFTP 22). Если данные подключения уже ранее передавались конструктору FTP, нет необходимости вызывать метод con.connect()
con.cwd(путь к папке)
Выполняет переход по указанному пути тем самым изменяя текущий рабочий каталог.
con.delete(путь до файла)
Удаляет указанный файл с сервера.