Как видно из моей предыдущей статьи, просмотр веб-страниц может быть чрезвычайно полезен при анализе данных. Часто возникает одна проблема, когда вам нужны данные с веб-сайта, посвященного конкретному товару. При этом вам нужно будет получить уникальную ссылку каждого элемента, чтобы иметь возможность очистить данные для этого элемента. В этом посте я объясню, как получить данные для каждого уникального элемента.

Во-первых, давайте импортируем некоторые стандартные библиотеки:

Далее, давайте получим ссылку на первую страницу того, что мы пытаемся найти. Для наших целей давайте использовать мотоциклы в Нью-Йорке.

Используя приведенную выше ссылку, давайте распечатаем HTML-контент со страницы.

а затем распечатайте его.. это огромный кусок кода, который не слишком полезен, но мы будем использовать BeautifulSoup, как показано выше, чтобы помочь нам проанализировать HTML.

затем щелкните правой кнопкой мыши список и нажмите «Проверить», это откроет код HTML:

Мы видим, что использование класса row будет очень важно. Абстрагируем все строки.

Теперь нам нужно получить элементы мотоцикла. Мы можем сделать это с помощью следующего кода:

Пока это выглядит довольно солидно. Есть несколько элементов, которые нам нужны, в частности, такие как название, цена и URL-адрес каждого уникального элемента, чтобы мы могли использовать его позже для получения конкретных деталей.

Чтобы получить цену, мы должны использовать «промежуток» с именем класса и ценой результата.

Мы будем использовать код в нашем цикле for с атрибутами text и strip.

Похоже, у нас это неплохо получилось. Следующий элемент, который мы должны получить, это URL. Это немного сложнее, но не должно быть слишком сложным. С элементом проверки мы видим, что он имеет тег «href».

Мы можем использовать это для создания нашего кода и получения каждой уникальной ссылки.

И, наконец, давайте получим заголовок. Мы сделаем это таким же образом, используя inspect, чтобы получить класс и теги, а затем использовать их для создания нашего кода. Теперь наш код должен выглядеть так:

Чтобы получить данные с нескольких страниц, вам нужно будет создать разбиение на страницы, но сейчас давайте получим атрибуты каждого конкретного велосипеда, используя их ссылку. Итак, выбираем листинг.

Это атрибуты:

Давайте возьмем ссылку для этого конкретного мотоцикла и используем ее в качестве нашего URL-адреса для сбора данных.

Теперь мы должны осмотреть страницу, чтобы узнать, что нам действительно интересно.

Мы видим, что «attrgroup» интересна и, вероятно, полезна, а также все эти «span». Итак, давайте получим все «группы атрибутов».

Поскольку в каждом листинге будет несколько атрибутов, мы можем использовать цикл for для получения каждого из атрибутов. Внутри атрибутов есть несколько «промежутков», поэтому нам нужно найти все «промежутки», а также получить из них текст.

Мы также можем получить описание, и это выглядит довольно просто, потому что это просто «идентификатор раздела» с «телом публикации»:

При поиске класса вы используете метод «class_=», но при поиске раздела вы можете просто использовать словарь и передать «id» (или любой другой параметр, который он может иметь вместо этого).

И вот оно. Если вы хотите получить его для всех списков, вам просто нужно поместить полный код в цикл for и функцию.