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