Скрап скрап Apple, сайт - PullRequest
       11

Скрап скрап Apple, сайт

0 голосов
/ 19 ноября 2018

Я пытался получить Модели и цены по ссылке ниже, но не повезло, пожалуйста, дайте мне знать, что не так и как я могу отменить эти 2 части?

https://www.apple.com/shop/buy-ipad/ipad-pro

вот что я пробовал:

От 799 $

Чтобы получить слово "От"

response.xpath('//span[@class="as-price-currentprice"]/text()').extract()

[]


Чтобы получить цену:

response.xpath('//span[@class="nowrap"]/text()').extract()

[u'1\u2011800\u2011MY\u2011APPLE.', u'1\u2011800\u2011MY\u2011APPLE.', u'Visit an ', u'call ', u', or ']


Модель

Кстати, я не могу получить модели вообще

11-дюймовый iPad Pro

12,9-дюймовый iPad Pro

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Посмотрите на необработанный HTML-код, возвращаемый веб-сайтом (щелкните правой кнопкой мыши> Просмотреть источник).

Raw HTML

Как видите, страница - это просто шаблон, который динамически отображается с помощью некоторого кода Javascript.

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

0 голосов
/ 19 ноября 2018

Вот как вы можете это сделать:

headers = response.css('.pd-billboard-subheader::text').getall()
prices = response.css('.pd-billboard-price::text').getall()

result = []
for header, price in zip(headers, prices):
    header_cleaned = header.replace('\xa0', ' ')
    price_cleaned = price.replace('\n', '').replace('        ', '').strip()
    result.append([header_cleaned, price_cleaned])

После этого результат будет выглядеть примерно так:

[['12.9-inch iPad Pro', 'From $999'],
 ['11-inch iPad Pro', 'From $799'],
 ['10.5-inch iPad Pro', 'From $649'],
 ['iPad', 'From $329'],
 ['iPad mini 4', 'From $399']]
...