Опубликован: 14.06.2015 | Доступ: свободный | Студентов: 4656 / 500 | Длительность: 21:48:00
Авторские права: Creative Commons Attribution 3.0
Лекция 12:

Сетевые программы

23.8. Глоссарий

BeautifulSoup1Название происходит от распространенного выражения "tag soup" – суп, смесь из тегов, которое употребляется для плохо сформированных HTML-документов. Библиотека BeautifulSoup – "Прекрасный суп", по-видимому, хорошо разбирается в подобном супе. – прим. перев. : библиотека Питона для разбора HTML-документов и извлечения данных из них, которая, подобно большинству браузеров, принимает даже плохо сформированные HTML-документы. Код библиотеки BeautifulSoup можно скачать по адресу http://www.crummy.com

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

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

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

Паук (spider): способ работы сетевой поисковой машины, которая считывает страницу, затем все страницы, на которые она ссылается, и так далее, пока в конце-концов не будут пройдены почти все страницы в Интернет. Используется при построении поисковых систем.

23.9. Упражнения

Упражнение 23.1.

Измените использующую механизм сокетов программу socket1.py так, чтобы она сначала запрашивала у пользователя адрес веб-страницы (URL) и затем считывала её. Можно использовать разделитель '/' и строковый метод split для того, чтобы разбить URL на компоненты и извлечь адрес сетевого узла, который необходим при установке соединения через сокет. Добавьте проверку ошибок, используя конструкцию try-except, для обработки ситуации, когда пользователь ввел неправильно сформированный или несуществующий URL.

Упражнение 23.2.

Измените программу, использующую механизм сокетов, так, чтобы она подсчитывала количество полученных символов и прекращала печатать текст после того, как напечатано 3000 символов. Однако читать документ программа должна до конца – для подсчета числа символов во всём документе. По окончании чтения число символов должно быть напечатано.

Упражнение 23.3.

Используйте urllib для того, чтобы иным способом решить предыдущее упражнение:

  1. получить документ из сети,
  2. напечатать не более чем 3000 его начальных символов,
  3. подсчитать общее число символов в документе.

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

Упражнение 23.4.

Измените программу urllinks.py так, чтобы извлечь теги <p> ("paragraph" – абзац) из полученного HTML-документа, подсчитать их число и на выходе напечатать количество абзацев в документе. Не нужно печатать текст абзацев – только подсчитать их. Протестируйте вашу программу на нескольких небольших веб-страницах и затем попробуйте на каких-нибудь объемных страницах.

Упражнение 23.5 (более сложное).

Измените программу, использующую сокеты, так, чтобы она печатала только данные после того, как получены заголовочная информация и пустая строка. Помните, что метод recv получает символы (в том числе символ перехода на новую строку), а не строки.

Ксения Шошина
Ксения Шошина

курс Программирование на Python

Илья Кизилов
Илья Кизилов

В лекции приводится программа для сортировки слов по их длинне. В коде ошибка. Я исправил так:

def sort_by_length(words):

words = words.split()

t = []

for word in words:

t.append((len(word), word))

t.sort(reverse=True)

res = []

for length, word in t:

res.append(word)

return res

print(sort_by_length(words))

 

Кто ещё как сделал?

 

Irina Muraveyova
Irina Muraveyova
Россия, RF
Александр Мантей
Александр Мантей
Россия, г. Новомосковск