Parsing

4 — Get links

Опубликовано

И так, мы получили код для анализа, теперь мы можем получать необходимые объекты. Давайте попробуем получить список доступных курсов на koddom.com, указанных в самом низу в виде красных кнопок.

Сначала найдём эти кнопки в коде. Пролистайте код в самый низ. Там вы увидите блок div принадлежащий к классу share. Здесь вы видите закомментированные кнопки, которые не отображаются на странице (комментарий в HTML заключён между <!— контент —>).

Для того чтобы целиком получить тег div, принадлежащий к классу share, из нашего супа вызывается метод select(«.имя_класса»). Или select(«#имя_id»), если тег принадлежит к id.

print(soup.select('.share'))

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

print(soup.select('.share > a'))

Тем самым указав, что из блока с классом share, мы хотим выбрать только теги a. В результате мы получим итерируемый объект, но это не список! Чтобы узнать тип объекта, используйте функцию type(). А раз объект итерируемый, то мы можем пройтись по нему в цикле. Сохраните выборку в переменную courses и пройдитесь по ней используя цикл for.

Внутри цикла у каждого элемента мы выводим на экран свойство string — оно содержит текст выводимый на экран браузера. А свойство attrs содержит словарь доступных атрибутов данного элемента. В данном словаре есть ключ href, значение которого мы и выводим на экран (смотри картинку ниже).

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

print(courses[0].attrs)

В нашем примере тег <a> имеет всего один атрибут.

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

Мы видим, что метод select() самостоятельно исключил из списка закоментированные ссылки, и нам не пришлось выполнять лишних действий. Ну что ж, теперь у нас есть новые ссылки, а значит из них мы тоже можем сварить BeautifulSoup. Отправим запрос get на каждую ссылку которую мы получили. И в цикле создадим объекты для парсинга.

Instructions:

  1. Выберите из всего контента сайта только блок с классом .share. Используйте метод select. Выведите результат на экран
  2. Теперь объявите переменную courses и сохраните в неё все теги <a>, содержащиеся в блоке с классом .share
  3. Проитерируйте объект courses в цикле for, выводя на экран каждый элемент из courses.
  4. В цикле для каждого объекта получите и выведите на экран свойство string и attrs[‘href’]

Добавить комментарий

Ваш адрес email не будет опубликован.