Простой Python. Современный стиль программирования (Любанович) - страница 164

>$ pip install beautifulsoup4

Теперь воспользуемся им для того, чтобы получить все ссылки с веб-страницы. Элемент HTML a представляет собой ссылку, а href — ее атрибут, который представляет собой место назначения ссылки. В следующем примере мы определим функцию get_links(), которая делает грязную работу, и основную программу, которая получает один или несколько URL как аргументы командной строки:

>def get_links(url):

>····import requests

>····from bs4 import BeautifulSoup as soup

>····result = requests.get(url)

>····page = result.text

>····doc = soup(page)

>····links = [element.get('href') for element in doc.find_all('a')]

>····return links

>if __name__ == '__main__':

>····import sys

>····for url in sys.argv[1:]:

>········print('Links in', url)

>········for num, link in enumerate(get_links(url), start=1):

>············print(num, link)

>········print()

Я сохранил эту программу под именем links.py, а затем запустил с помощью данной команды:

>$ python links.py http://boingboing.net

Взгляните на первые несколько отображенных строк:

>Links in http://boingboing.net/

>1 http://boingboing.net/suggest.html

>2 http://boingboing.net/category/feature/

>3 http://boingboing.net/category/review/

>4 http://boingboing.net/category/podcasts

>5 http://boingboing.net/category/video/

>6 http://bbs.boingboing.net/

>7 javascript: void(0)

>8 http://shop.boingboing.net/

>9 http://boingboing.net/about

>10 http://boingboing.net/contact

Упражнения

1. Если вы еще не установили Flask, сделайте это сейчас. Это также установит werkzeug, jinja2 и, возможно, другие пакеты.

2. Создайте скелет сайта с помощью веб-сервера Flask. Убедитесь, что сервер начинает свою работу по адресу Localhost на стандартном порте 5000. Если ваш компьютер уже использует порт 5000 для чего-то еще, воспользуйтесь другим портом.

3. Добавьте функцию home() для обработки запросов к домашней странице. Пусть она возвращает строку It's alive!.

4. Создайте шаблон для jinja2, который называется home.html и содержит следующий контент:

>

>

>It's alive!

>

>I'm of course referring to {{thing}}, which is {{height}} feet tall and {{color}}.

>

>

5. Модифицируйте функцию home() вашего сервера, чтобы она использовала шаблон home.html. Передайте ей три параметра для команды GET: thing, height и color.

Глава 10. Системы

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

Джек Хэнди

Каждый день, когда вы используете компьютер, вы выводите в виде списка на экран содержимое каталогов, создаете и удаляете файлы и выполняете другую необходимую работу, даже если это не очень захватывает. Вы также можете выполнить эти (и другие) задачи с помощью программ, написанных на Python. Сможет ли эта сила свести вас с ума или заставить потерять сон? Поживем — увидим.