Здесь запросы для трех полей текста ссылок BMW X6 кроссовер (37 значений), значения @href /catalog/bmw/m3/f30/sedan/(37 значений), и поля цены 4121000 (34 значения)... Две красивых картинки и фрагменты кода страницы.
Этот пост использовался для подбора и тестирования XPath запросов.
Нужно забежать вперед¶
Итак, Для начала я решил выделить все ссылки с одной страницы каталога автомобилей (получилось 37) и цены, потом из этого сформировать табличку 37х3. Поскольку этот пост учебный, то я его продолжу, но "в жизни" надо было бы бросить это дело и сначала проверить, можно ли парсить эту страницу в Scrapy. По ходу изучения кода возникло два вопроса. Первый, как не потерять соответсятвия между ссылками и ценой. Второй, проверить, где на страничку вставляется цена (с сервера BMW) - на сервере cars.mail.ru, или у меня в браузере.
Ответ на первый вопрос нашелся довольно быстро. В примере из справки Scrapy c DMOZ:
for sel in response.xpath('//ul/li'):
title = sel.xpath('a/text()').extract()
link = sel.xpath('a/@href').extract()
desc = sel.xpath('text()').extract()
print title, link, desc
Здесь сначала выбирается общий селектор, а потом в нем уже ищутся элементы, которые заполняют каждый item объекта Item...
А вот второй вопрос самый главный, если цены грузятся сразу в мой браузер, то надо ломать голову, как "перехватить" цены, или перейти на Nodejs... так что, все то, что написано ниже может и не понадобиться...
Решил, что надо вспоминать scrapy shell, и проверил есть ли "цены" на сервере¶
C:\Users\kiss\SkyDrive\Docs\mailru\cars_mail_1>scrapy shell "https://cars.mail.ru/catalog/bmw/" -s USER_AGENT="Mozilla/5.0 (Windows
NT 6.3; WOW64)"
....
response.body
# Скопипастил в редактор и быстро нашел фрагменты вида
<span class="rank"><i>1</i><i>104</i><i>000</i></span>
# Это и есть те самые цены, и scrapy получил их с сервера
Теперь сомнений не осталось и можно двигаться дальше.
В конце страницы фрагмент кода со всеми ссылками, а вот этот фрагмент мы будем парсить:
<a href="/catalog/bmw/1/e82/coupe/" class="catalog-generation__card__title">
BMW 1
купе
</a>
Запустим XPath helper (Ctrl+Shift+x), потом наведем курсор на ссылку и нажмем Shift. Появятся два фрейма, в левом сгенерируерся код:
# Вот этот сгенерированный Xpath выдает строчку "BMW 1 купе"
/html[@class=' cpf-js cpf-no-touch cpf-cssanimations cpf-csstransforms
cpf-csstransforms3d cpf-csstransitions cpf-mediaqueries
js pm-backgroundsize pm-boxshadow pm-csstransitions pm-classlist
pm-raf pm-transitionend pm-dpr pm-retina pm-no-ie pm-requestanimationframe']
/body
/div[@class='page js-page page_column-left-no']
/div[@class='page__in js-page_in']
/div[@class='page__body clear js-page__body']
/div[@class='page__body__unit']
/div[@class='page__body__unit__in']
/div[@class='page__body__unit__box clear']
/div[@class='page__body__main']
/div[@class='page__body__main__box']
/div[@class='catalog-generation']
/div[@class='catalog-generation__list'][1]
/div[@class='catalog-generation__card'][1]
/a[@class='catalog-generation__card__title']
Заменим код вот на этот:
//div[@class='catalog-generation']
/div[@class='catalog-generation__list']
/div[@class='catalog-generation__card']
/a[@class='catalog-generation__card__title']
Страничку надо обязательно проверить, оказывается не все ссылки выделены:
from IPython.display import Image
Image('C:\\Users\\kiss\\Pictures\\pythonR\\bmw_1.png')
Почему "новые" машины не захватываются? Откроем инструменты разработчика и проверим код:
Image('C:\\Users\\kiss\\Pictures\\pythonR\\bmw_2.png')
<div class="catalog-generation__card catalog-generation__card_new">
<div class="catalog-generation__card__pic catalog-generation__card__pic_suv" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/7/0/70f81f569abcaf85b9cebca0d722e296_240x150.png);"></div>
<a href="/catalog/bmw/x6/f16/crossover/" class="catalog-generation__card__title">
BMW X6
кроссовер
</a>
<div class="catalog-generation__card__price">
<span class="catalog-generation__card__price__note">от</span>
<span class="catalog-generation__card__price__value"><span class="rank"><i>3</i><i>508</i><i>000</i></span></span>
<span class="catalog-generation__card__price__note">руб.</span>
</div>
</div>
Оказывается, что в XPath нам нужно указать все классы (всю строчку в кавычках "catalog-generationcard catalog-generationcard_new")... Однако проще вообще убрать атрибут класса. Вот эта команда вытащит все (всего 37 ) тексты из ссылок:
//div[@class='catalog-generation']
/div[@class='catalog-generation__list']
/div
/a[@class='catalog-generation__card__title']
В конце поста можно найти все тексты. Не исключено, что их надо будет почистить от символов переноса строк и пробелов... Но пока нам не до этого Мы теперь вытащим сами ссылки (их тоже получилось 37):
//div[@class='catalog-generation']
/div[@class='catalog-generation__list']
/div
/a[@class='catalog-generation__card__title']/@href
/catalog/bmw/1/e82/coupe/
/catalog/bmw/3/f30_31/sedan/
/catalog/bmw/2/f22_coupe/coupe/
/catalog/bmw/3/e92/coupe/
/catalog/bmw/4/f32_33/coupe/
/catalog/bmw/5/f10_11_restailing/sedan/
/catalog/bmw/m3/f30/sedan/
/catalog/bmw/m4/i/coupe/
/catalog/bmw/7/f01_02_04_restailing/sedan/
/catalog/bmw/6_coupe/f12/coupe/
/catalog/bmw/6_gran_coupe/f06/sedan/
/catalog/bmw/m6/f12_13/coupe/
/catalog/bmw/m6_gran_coupe/f06/sedan/
/catalog/bmw/i8/i/coupe/
/catalog/bmw/1/ii_f20_21/hatchback/
/catalog/bmw/3/f30_31/wagon/
/catalog/bmw/3_gran_turismo/f34/hatchback/
/catalog/bmw/m1/f20_21/hatchback/
/catalog/bmw/3_gran_coupe/f36/hatchback/
/catalog/bmw/5/f10_11_restailing/wagon/
/catalog/bmw/5_gran_turismo/f07_restailing/hatchback/
/catalog/bmw/x1/e84_restailing/crossover/
/catalog/bmw/x3/f25_restailing/crossover/
/catalog/bmw/x4/f26/crossover/
/catalog/bmw/x5/f15/crossover/
/catalog/bmw/x6/f16/crossover/
/catalog/bmw/x6_m/e71_m_restailing/crossover/
/catalog/bmw/x6_m/f16/crossover/
/catalog/bmw/2_active_tourer/i/minivan/
/catalog/bmw/1/e88/cabrio/
/catalog/bmw/3/e93/cabrio/
/catalog/bmw/z4/e89/cabrio/
/catalog/bmw/4/f32_33/cabrio/
/catalog/bmw/m4/i/cabrio/
/catalog/bmw/6_coupe/f13/cabrio/
/catalog/bmw/m6/f12_13/cabrio/
/catalog/bmw/2/f23_cabrio/cabrio/
Не надо и про цены забывать. Здесь оказывается, что цена на страницу (по-видимому) вставляется с сайта производителя, потому что вот такая "странная" разметка используется:
<div class="catalog-generation__card__price">
<span class="catalog-generation__card__price__note">от</span>
<span class="catalog-generation__card__price__value">
<span class="rank">
<i>3</i>
<i class="">508</i>
<i>000</i>
</span>
</span>
<span class="catalog-generation__card__price__note">руб.</span>
</div>
На предыдущей картинке видно, что строчка цены " 3 508 000 руб." расположена сразу под названием " BMW X6 кроссовер "
Но код XPath на всякий случай подберем, вот вариант генерации в инструментах разработчика (клик правой кнопкой, выбор в меню)
/html/body/div[2]/div/div[2]/div[1]/div/div/div[2]/div/div[2]/div[6]/div[5]/div[2]/span[2]
div[@catalog-generation__card__price]
//div[@class='catalog-generation__card__price']
/span[@class='catalog-generation__card__price__value']
/span[@class='rank']
Выдаст только 34 значения, оказывается, под тремя картинками цены просто нет (весь список есть в конце страницы).
Нам нужно сначала организовать итерации по блокам div class="catalog-generation__card"
$('.catalog-generation__card').length;
А потом в каждом блоке найти три поля. Очевидно, что первоначальные длинные запросы можно сократить
# Название марки в теге ссылки
//div[@class='catalog-generation']/div[@class='catalog-generation__list']/div/a[@class='catalog-generation__card__title']
# адрес ссылки
//div[@class='catalog-generation']/div[@class='catalog-generation__list']/div/a[@class='catalog-generation__card__title']/@href
# Цена марки
//div[@class='catalog-generation__card__price']/span[@class='catalog-generation__card__price__value']/span[@class='rank']
//a[@class='catalog-generation__card__title']
Вот так примерно будет выглядеть итератор по странице¶
for sel in sel.css('.catalog-generation__card'):
title = sel.xpath('//a[@class="catalog-generation__card__title"]/text()').extract()
link = sel.xpath('.//a[@class="catalog-generation__card__title"]/@href').extract()
price = sel.xpath('.//span[@class="rank"]').extract()
print title, link, price
Ниже копипаст вывода поля price, здесь он красивый, но на самом деле здесь присутствуют html-теги ""i",их нужно будет убрать.
1104000
1398000
1400000
1450000
1838000
1908000
3332000
3460000
3594000
3766000
4121000
7005000
7665000
8880000
1240000
1660000
1675000
1850000
1906000
2519000
2752000
1413000
1948000
2314000
2999000
3508000
4464000
1260000
1750000
2038000
2322000
3860000
4059000
7543000
Вот блок кода с исходными данными¶
<div class="catalog-generation">
<div class="catalog-generation__title">Седаны и купе</div>
<div class="catalog-generation__list">
<div class="catalog-generation__card">
<div class="catalog-generation__card__pic catalog-generation__card__pic_sedan" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/9/a/9ad783137bc8e972a7ffd90654ab79fa_240x150.png);"></div>
<a href="/catalog/bmw/1/e82/coupe/" class="catalog-generation__card__title">
BMW 1
купе
</a>
<div class="catalog-generation__card__price">
<span class="catalog-generation__card__price__note">от</span>
<span class="catalog-generation__card__price__value"><span class="rank"><i>1</i><i>104</i><i>000</i></span></span>
<span class="catalog-generation__card__price__note">руб.</span>
</div>
</div>
<div class="catalog-generation__card">
<div class="catalog-generation__card__pic catalog-generation__card__pic_sedan" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/9/b/9b2721197ae913ce3f7f14fe014521ff_240x150.png);"></div>
<a href="/catalog/bmw/3/f30_31/sedan/" class="catalog-generation__card__title">
BMW 3
седан
</a>
<div class="catalog-generation__card__price">
<span class="catalog-generation__card__price__note">от</span>
<span class="catalog-generation__card__price__value"><span class="rank"><i>1</i><i>398</i><i>000</i></span></span>
<span class="catalog-generation__card__price__note">руб.</span>
</div>
</div>
<div class="catalog-generation__card">
<div class="catalog-generation__card__pic catalog-generation__card__pic_sedan" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/8/d/8d2f9563d49430181c3be47769ed5b86_240x150.png);"></div>
<a href="/catalog/bmw/2/f22_coupe/coupe/" class="catalog-generation__card__title">
BMW 2
купе
</a>
<div class="catalog-generation__card__price">
<span class="catalog-generation__card__price__note">от</span>
<span class="catalog-generation__card__price__value"><span class="rank"><i>1</i><i>400</i><i>000</i></span></span>
<span class="catalog-generation__card__price__note">руб.</span>
</div>
</div>
<div class="catalog-generation__card">
<div class="catalog-generation__card__pic catalog-generation__card__pic_sedan" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/0/5/05fd211fb97258420ec94d546848c0c5_240x150.png);"></div>
<a href="/catalog/bmw/3/e92/coupe/" class="catalog-generation__card__title">
BMW 3
купе
</a>
<div class="catalog-generation__card__price">
<span class="catalog-generation__card__price__note">от</span>
<span class="catalog-generation__card__price__value"><span class="rank"><i>1</i><i>450</i><i>000</i></span></span>
<span class="catalog-generation__card__price__note">руб.</span>
</div>
</div>
<div class="catalog-generation__card">
<div class="catalog-generation__card__pic catalog-generation__card__pic_sedan" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/8/9/899a85ffc951da6b6a6a5d89ee7b7a62_240x150.png);"></div>
<a href="/catalog/bmw/4/f32_33/coupe/" class="catalog-generation__card__title">
BMW 4
купе
</a>
<div class="catalog-generation__card__price">
<span class="catalog-generation__card__price__note">от</span>
<span class="catalog-generation__card__price__value"><span class="rank"><i>1</i><i>838</i><i>000</i></span></span>
<span class="catalog-generation__card__price__note">руб.</span>
</div>
</div>
<div class="catalog-generation__card">
<div class="catalog-generation__card__pic catalog-generation__card__pic_sedan" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/1/5/15f5ba7eda2ab6ea17bccba7f6621516_240x150.png);"></div>
<a href="/catalog/bmw/5/f10_11_restailing/sedan/" class="catalog-generation__card__title">
BMW 5
седан
</a>
<div class="catalog-generation__card__price">
<span class="catalog-generation__card__price__note">от</span>
<span class="catalog-generation__card__price__value"><span class="rank"><i>1</i><i>908</i><i>000</i></span></span>
<span class="catalog-generation__card__price__note">руб.</span>
</div>
</div>
<div class="catalog-generation__card">
<div class="catalog-generation__card__pic catalog-generation__card__pic_sedan" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/5/c/5cb7fd079beae190387ffcfdb20682e6_240x150.png);"></div>
<a href="/catalog/bmw/m3/f30/sedan/" class="catalog-generation__card__title">
BMW M3
седан
</a>
<div class="catalog-generation__card__price">
<span class="catalog-generation__card__price__note">от</span>
<span class="catalog-generation__card__price__value"><span class="rank"><i>3</i><i>332</i><i>000</i></span></span>
<span class="catalog-generation__card__price__note">руб.</span>
</div>
</div>
<div class="catalog-generation__card">
<div class="catalog-generation__card__pic catalog-generation__card__pic_sedan" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/9/0/902f5c6a4bf791cd3173f966df7b7221_240x150.png);"></div>
<a href="/catalog/bmw/m4/i/coupe/" class="catalog-generation__card__title">
BMW M4
купе
</a>
<div class="catalog-generation__card__price">
<span class="catalog-generation__card__price__note">от</span>
<span class="catalog-generation__card__price__value"><span class="rank"><i>3</i><i>460</i><i>000</i></span></span>
<span class="catalog-generation__card__price__note">руб.</span>
</div>
</div>
<div class="catalog-generation__card">
<div class="catalog-generation__card__pic catalog-generation__card__pic_sedan" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/d/f/df2d97b26d1f14fde30e16827f4d15b2_240x150.png);"></div>
<a href="/catalog/bmw/7/f01_02_04_restailing/sedan/" class="catalog-generation__card__title">
BMW 7
седан
</a>
<div class="catalog-generation__card__price">
<span class="catalog-generation__card__price__note">от</span>
<span class="catalog-generation__card__price__value"><span class="rank"><i>3</i><i>594</i><i>000</i></span></span>
<span class="catalog-generation__card__price__note">руб.</span>
</div>
</div>
<div class="catalog-generation__card">
<div class="catalog-generation__card__pic catalog-generation__card__pic_sedan" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/4/7/473549c60809d6021cb8e34414224dda_240x150.png);"></div>
<a href="/catalog/bmw/6_coupe/f12/coupe/" class="catalog-generation__card__title">
BMW 6
купе
</a>
<div class="catalog-generation__card__price">
<span class="catalog-generation__card__price__note">от</span>
<span class="catalog-generation__card__price__value"><span class="rank"><i>3</i><i>766</i><i>000</i></span></span>
<span class="catalog-generation__card__price__note">руб.</span>
</div>
</div>
<div class="catalog-generation__card">
<div class="catalog-generation__card__pic catalog-generation__card__pic_sedan" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/8/5/85b34146b192686baa38300ff6c5b9a6_240x150.png);"></div>
<a href="/catalog/bmw/6_gran_coupe/f06/sedan/" class="catalog-generation__card__title">
BMW 6 Gran Coupe
седан
</a>
<div class="catalog-generation__card__price">
<span class="catalog-generation__card__price__note">от</span>
<span class="catalog-generation__card__price__value"><span class="rank"><i>4</i><i>121</i><i>000</i></span></span>
<span class="catalog-generation__card__price__note">руб.</span>
</div>
</div>
<div class="catalog-generation__card">
<div class="catalog-generation__card__pic catalog-generation__card__pic_sedan" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/c/a/cab6f6aa7a7f013cbbcdfb528d70dd66_240x150.png);"></div>
<a href="/catalog/bmw/m6/f12_13/coupe/" class="catalog-generation__card__title">
BMW M6
купе
</a>
<div class="catalog-generation__card__price">
<span class="catalog-generation__card__price__note">от</span>
<span class="catalog-generation__card__price__value"><span class="rank"><i>7</i><i>005</i><i>000</i></span></span>
<span class="catalog-generation__card__price__note">руб.</span>
</div>
</div>
<div class="catalog-generation__card">
<div class="catalog-generation__card__pic catalog-generation__card__pic_sedan" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/2/e/2e7909b4de9312bd11686947d8a44918_240x150.png);"></div>
<a href="/catalog/bmw/m6_gran_coupe/f06/sedan/" class="catalog-generation__card__title">
BMW M6 Gran Coupe
седан
</a>
<div class="catalog-generation__card__price">
<span class="catalog-generation__card__price__note">от</span>
<span class="catalog-generation__card__price__value"><span class="rank"><i>7</i><i>665</i><i>000</i></span></span>
<span class="catalog-generation__card__price__note">руб.</span>
</div>
</div>
<div class="catalog-generation__card catalog-generation__card_new">
<div class="catalog-generation__card__pic catalog-generation__card__pic_sedan" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/7/e/7e7ba59fd8e750162f94de2629e1eb77_240x150.png);"></div>
<a href="/catalog/bmw/i8/i/coupe/" class="catalog-generation__card__title">
BMW i8
купе
</a>
<div class="catalog-generation__card__price">
<span class="catalog-generation__card__price__note">от</span>
<span class="catalog-generation__card__price__value"><span class="rank"><i>8</i><i>880</i><i>000</i></span></span>
<span class="catalog-generation__card__price__note">руб.</span>
</div>
</div>
</div>
<div class="catalog-generation__title">Хэтчбеки и универсалы</div>
<div class="catalog-generation__list">
<div class="catalog-generation__card">
<div class="catalog-generation__card__pic catalog-generation__card__pic_sedan" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/7/6/767c81ccd98ced19c99444f18a9e24ff_240x150.png);"></div>
<a href="/catalog/bmw/1/ii_f20_21/hatchback/" class="catalog-generation__card__title">
BMW 1
хэтчбек
</a>
<div class="catalog-generation__card__price">
<span class="catalog-generation__card__price__note">от</span>
<span class="catalog-generation__card__price__value"><span class="rank"><i>1</i><i>240</i><i>000</i></span></span>
<span class="catalog-generation__card__price__note">руб.</span>
</div>
</div>
<div class="catalog-generation__card">
<div class="catalog-generation__card__pic catalog-generation__card__pic_sedan" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/e/0/e07116135181660b9856cf197517ce17_240x150.png);"></div>
<a href="/catalog/bmw/3/f30_31/wagon/" class="catalog-generation__card__title">
BMW 3
универсал
</a>
<div class="catalog-generation__card__price">
<span class="catalog-generation__card__price__note">от</span>
<span class="catalog-generation__card__price__value"><span class="rank"><i>1</i><i>660</i><i>000</i></span></span>
<span class="catalog-generation__card__price__note">руб.</span>
</div>
</div>
<div class="catalog-generation__card">
<div class="catalog-generation__card__pic catalog-generation__card__pic_sedan" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/c/6/c687585f4ae0c0ae9610b2c69c0bd097_240x150.png);"></div>
<a href="/catalog/bmw/3_gran_turismo/f34/hatchback/" class="catalog-generation__card__title">
BMW 3 Gran Turismo
хэтчбек
</a>
<div class="catalog-generation__card__price">
<span class="catalog-generation__card__price__note">от</span>
<span class="catalog-generation__card__price__value"><span class="rank"><i>1</i><i>675</i><i>000</i></span></span>
<span class="catalog-generation__card__price__note">руб.</span>
</div>
</div>
<div class="catalog-generation__card">
<div class="catalog-generation__card__pic catalog-generation__card__pic_sedan" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/e/2/e2c7b23b6c54f5d330e51881489a44f0_240x150.png);"></div>
<a href="/catalog/bmw/m1/f20_21/hatchback/" class="catalog-generation__card__title">
BMW M1
хэтчбек
</a>
<div class="catalog-generation__card__price">
<span class="catalog-generation__card__price__note">от</span>
<span class="catalog-generation__card__price__value"><span class="rank"><i>1</i><i>850</i><i>000</i></span></span>
<span class="catalog-generation__card__price__note">руб.</span>
</div>
</div>
<div class="catalog-generation__card">
<div class="catalog-generation__card__pic catalog-generation__card__pic_sedan" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/0/c/0caa0ae3ba31d51998397f7fe46ddfe1_240x150.png);"></div>
<a href="/catalog/bmw/3_gran_coupe/f36/hatchback/" class="catalog-generation__card__title">
BMW 4 Gran Coupe
хэтчбек
</a>
<div class="catalog-generation__card__price">
<span class="catalog-generation__card__price__note">от</span>
<span class="catalog-generation__card__price__value"><span class="rank"><i>1</i><i>906</i><i>000</i></span></span>
<span class="catalog-generation__card__price__note">руб.</span>
</div>
</div>
<div class="catalog-generation__card">
<div class="catalog-generation__card__pic catalog-generation__card__pic_sedan" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/7/0/704372372f773ab1b492e133773a7788_240x150.png);"></div>
<a href="/catalog/bmw/5/f10_11_restailing/wagon/" class="catalog-generation__card__title">
BMW 5
универсал
</a>
<div class="catalog-generation__card__price">
<span class="catalog-generation__card__price__note">от</span>
<span class="catalog-generation__card__price__value"><span class="rank"><i>2</i><i>519</i><i>000</i></span></span>
<span class="catalog-generation__card__price__note">руб.</span>
</div>
</div>
<div class="catalog-generation__card">
<div class="catalog-generation__card__pic catalog-generation__card__pic_sedan" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/5/9/59a2c477dd37c5adb8525ef1ce9fd7bb_240x150.png);"></div>
<a href="/catalog/bmw/5_gran_turismo/f07_restailing/hatchback/" class="catalog-generation__card__title">
BMW 5 Gran Turismo
хэтчбек
</a>
<div class="catalog-generation__card__price">
<span class="catalog-generation__card__price__note">от</span>
<span class="catalog-generation__card__price__value"><span class="rank"><i>2</i><i>752</i><i>000</i></span></span>
<span class="catalog-generation__card__price__note">руб.</span>
</div>
</div>
</div>
<div class="catalog-generation__title">Кроссоверы и внедорожники</div>
<div class="catalog-generation__list">
<div class="catalog-generation__card">
<div class="catalog-generation__card__pic catalog-generation__card__pic_suv" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/b/2/b2a091ac291860ed8e088b078df59716_240x150.png);"></div>
<a href="/catalog/bmw/x1/e84_restailing/crossover/" class="catalog-generation__card__title">
BMW X1
кроссовер
</a>
<div class="catalog-generation__card__price">
<span class="catalog-generation__card__price__note">от</span>
<span class="catalog-generation__card__price__value"><span class="rank"><i>1</i><i>413</i><i>000</i></span></span>
<span class="catalog-generation__card__price__note">руб.</span>
</div>
</div>
<div class="catalog-generation__card">
<div class="catalog-generation__card__pic catalog-generation__card__pic_suv" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/6/a/6a1996d14a14a8fa5f190b204038998e_240x150.png);"></div>
<a href="/catalog/bmw/x3/f25_restailing/crossover/" class="catalog-generation__card__title">
BMW X3
кроссовер
</a>
<div class="catalog-generation__card__price">
<span class="catalog-generation__card__price__note">от</span>
<span class="catalog-generation__card__price__value"><span class="rank"><i>1</i><i>948</i><i>000</i></span></span>
<span class="catalog-generation__card__price__note">руб.</span>
</div>
</div>
<div class="catalog-generation__card catalog-generation__card_new">
<div class="catalog-generation__card__pic catalog-generation__card__pic_suv" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/4/9/49acb6127371b33872eb8b6ccdd6112b_240x150.png);"></div>
<a href="/catalog/bmw/x4/f26/crossover/" class="catalog-generation__card__title">
BMW X4
кроссовер
</a>
<div class="catalog-generation__card__price">
<span class="catalog-generation__card__price__note">от</span>
<span class="catalog-generation__card__price__value"><span class="rank"><i>2</i><i>314</i><i>000</i></span></span>
<span class="catalog-generation__card__price__note">руб.</span>
</div>
</div>
<div class="catalog-generation__card">
<div class="catalog-generation__card__pic catalog-generation__card__pic_suv" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/4/b/4bf0ba62408937ade54cc6b9447c6304_240x150.png);"></div>
<a href="/catalog/bmw/x5/f15/crossover/" class="catalog-generation__card__title">
BMW X5
кроссовер
</a>
<div class="catalog-generation__card__price">
<span class="catalog-generation__card__price__note">от</span>
<span class="catalog-generation__card__price__value"><span class="rank"><i>2</i><i>999</i><i>000</i></span></span>
<span class="catalog-generation__card__price__note">руб.</span>
</div>
</div>
<div class="catalog-generation__card catalog-generation__card_new">
<div class="catalog-generation__card__pic catalog-generation__card__pic_suv" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/7/0/70f81f569abcaf85b9cebca0d722e296_240x150.png);"></div>
<a href="/catalog/bmw/x6/f16/crossover/" class="catalog-generation__card__title">
BMW X6
кроссовер
</a>
<div class="catalog-generation__card__price">
<span class="catalog-generation__card__price__note">от</span>
<span class="catalog-generation__card__price__value"><span class="rank"><i>3</i><i>508</i><i>000</i></span></span>
<span class="catalog-generation__card__price__note">руб.</span>
</div>
</div>
<div class="catalog-generation__card">
<div class="catalog-generation__card__pic catalog-generation__card__pic_suv" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/7/6/7619da87b977135dbbd075d15ce0287a_240x150.png);"></div>
<a href="/catalog/bmw/x6_m/e71_m_restailing/crossover/" class="catalog-generation__card__title">
BMW X6 M
кроссовер
</a>
<div class="catalog-generation__card__price">
<span class="catalog-generation__card__price__note">от</span>
<span class="catalog-generation__card__price__value"><span class="rank"><i>4</i><i>464</i><i>000</i></span></span>
<span class="catalog-generation__card__price__note">руб.</span>
</div>
</div>
<div class="catalog-generation__card catalog-generation__card_new">
<div class="catalog-generation__card__pic catalog-generation__card__pic_suv" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/a/4/a4e95aa8090c597df81f551ff24ecc4e_240x150.png);"></div>
<a href="/catalog/bmw/x6_m/f16/crossover/" class="catalog-generation__card__title">
BMW X6 M
кроссовер
</a>
</div>
</div>
<div class="catalog-generation__title">Минивэны и пикапы</div>
<div class="catalog-generation__list">
<div class="catalog-generation__card catalog-generation__card_new">
<div class="catalog-generation__card__pic catalog-generation__card__pic_suv" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/7/b/7b53e17ebab8441e91a6a28e735a08a2_240x150.png);"></div>
<a href="/catalog/bmw/2_active_tourer/i/minivan/" class="catalog-generation__card__title">
BMW 2 Active Tourer
минивэн
</a>
</div>
</div>
<div class="catalog-generation__title">Кабриолеты и родстеры</div>
<div class="catalog-generation__list">
<div class="catalog-generation__card">
<div class="catalog-generation__card__pic catalog-generation__card__pic_sedan" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/1/c/1c7434ccd9c6c8aa696e78139f5041bf_240x150.png);"></div>
<a href="/catalog/bmw/1/e88/cabrio/" class="catalog-generation__card__title">
BMW 1
кабриолет
</a>
<div class="catalog-generation__card__price">
<span class="catalog-generation__card__price__note">от</span>
<span class="catalog-generation__card__price__value"><span class="rank"><i>1</i><i>260</i><i>000</i></span></span>
<span class="catalog-generation__card__price__note">руб.</span>
</div>
</div>
<div class="catalog-generation__card">
<div class="catalog-generation__card__pic catalog-generation__card__pic_sedan" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/f/0/f019bb6438beb3b306c970108669b97f_240x150.png);"></div>
<a href="/catalog/bmw/3/e93/cabrio/" class="catalog-generation__card__title">
BMW 3
кабриолет
</a>
<div class="catalog-generation__card__price">
<span class="catalog-generation__card__price__note">от</span>
<span class="catalog-generation__card__price__value"><span class="rank"><i>1</i><i>750</i><i>000</i></span></span>
<span class="catalog-generation__card__price__note">руб.</span>
</div>
</div>
<div class="catalog-generation__card">
<div class="catalog-generation__card__pic catalog-generation__card__pic_sedan" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/6/4/64e31d370ff4c3d264bd031d6bc11ce4_240x150.png);"></div>
<a href="/catalog/bmw/z4/e89/cabrio/" class="catalog-generation__card__title">
BMW Z4
кабриолет
</a>
<div class="catalog-generation__card__price">
<span class="catalog-generation__card__price__note">от</span>
<span class="catalog-generation__card__price__value"><span class="rank"><i>2</i><i>038</i><i>000</i></span></span>
<span class="catalog-generation__card__price__note">руб.</span>
</div>
</div>
<div class="catalog-generation__card">
<div class="catalog-generation__card__pic catalog-generation__card__pic_sedan" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/d/a/da5275b5424fd2794b82e48152e6bace_240x150.png);"></div>
<a href="/catalog/bmw/4/f32_33/cabrio/" class="catalog-generation__card__title">
BMW 4
кабриолет
</a>
<div class="catalog-generation__card__price">
<span class="catalog-generation__card__price__note">от</span>
<span class="catalog-generation__card__price__value"><span class="rank"><i>2</i><i>322</i><i>000</i></span></span>
<span class="catalog-generation__card__price__note">руб.</span>
</div>
</div>
<div class="catalog-generation__card">
<div class="catalog-generation__card__pic catalog-generation__card__pic_sedan" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/8/a/8a4a82635b485e81534e5bf787a374fc_240x150.png);"></div>
<a href="/catalog/bmw/m4/i/cabrio/" class="catalog-generation__card__title">
BMW M4
кабриолет
</a>
<div class="catalog-generation__card__price">
<span class="catalog-generation__card__price__note">от</span>
<span class="catalog-generation__card__price__value"><span class="rank"><i>3</i><i>860</i><i>000</i></span></span>
<span class="catalog-generation__card__price__note">руб.</span>
</div>
</div>
<div class="catalog-generation__card">
<div class="catalog-generation__card__pic catalog-generation__card__pic_sedan" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/c/b/cb329d682a80f9882a640c7e0b5c8da5_240x150.png);"></div>
<a href="/catalog/bmw/6_coupe/f13/cabrio/" class="catalog-generation__card__title">
BMW 6
кабриолет
</a>
<div class="catalog-generation__card__price">
<span class="catalog-generation__card__price__note">от</span>
<span class="catalog-generation__card__price__value"><span class="rank"><i>4</i><i>059</i><i>000</i></span></span>
<span class="catalog-generation__card__price__note">руб.</span>
</div>
</div>
<div class="catalog-generation__card">
<div class="catalog-generation__card__pic catalog-generation__card__pic_sedan" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/4/f/4f1a7d994346a8e47a06d41971078efd_240x150.png);"></div>
<a href="/catalog/bmw/m6/f12_13/cabrio/" class="catalog-generation__card__title">
BMW M6
кабриолет
</a>
<div class="catalog-generation__card__price">
<span class="catalog-generation__card__price__note">от</span>
<span class="catalog-generation__card__price__value"><span class="rank"><i>7</i><i>543</i><i>000</i></span></span>
<span class="catalog-generation__card__price__note">руб.</span>
</div>
</div>
<div class="catalog-generation__card catalog-generation__card_new">
<div class="catalog-generation__card__pic catalog-generation__card__pic_sedan" style="background-image:url(//cars.imgsmail.ru/catalogue/generations/2/f/2f029804416438c8f6ec716ac6d2abda_240x150.png);"></div>
<a href="/catalog/bmw/2/f23_cabrio/cabrio/" class="catalog-generation__card__title">
BMW 2
кабриолет
</a>
</div>
</div>
</div>
Результат парсинга поля "name" далее надо будет чистить от символов переноса строк¶
BMW 1
купе
BMW 3
седан
BMW 2
купе
BMW 3
купе
BMW 4
купе
BMW 5
седан
BMW M3
седан
BMW M4
купе
BMW 7
седан
BMW 6
купе
BMW 6 Gran Coupe
седан
BMW M6
купе
BMW M6 Gran Coupe
седан
BMW i8
купе
BMW 1
хэтчбек
BMW 3
универсал
BMW 3 Gran Turismo
хэтчбек
BMW M1
хэтчбек
BMW 4 Gran Coupe
хэтчбек
BMW 5
универсал
BMW 5 Gran Turismo
хэтчбек
BMW X1
кроссовер
BMW X3
кроссовер
BMW X4
кроссовер
BMW X5
кроссовер
BMW X6
кроссовер
BMW X6 M
кроссовер
BMW X6 M
кроссовер
BMW 2 Active Tourer
минивэн
BMW 1
кабриолет
BMW 3
кабриолет
BMW Z4
кабриолет
BMW 4
кабриолет
BMW M4
кабриолет
BMW 6
кабриолет
BMW M6
кабриолет
BMW 2
кабриолет
Посты чуть ниже также могут вас заинтересовать
Комментариев нет:
Отправить комментарий