Цена построен с его помощью JavaScript выполняется при загрузке страницы в браузере. Желаемая цена фактически находится внутри одного тега script
, который вы можете найти с помощью Scrapy, извлеките объект, содержащий цены, с помощью регулярных выражений, загрузите его через JSON и получите цену.
Demo от Scrapy Shell
:
$ scrapy shell http://www.bedstore.co.uk/p/Diamante_Faux_Leather_Bed_Frame.htm
In [1]: import re
In [2]: import json
In [3]: pattern = re.compile(r"qubit_product_list = (.*?);", re.M)
In [4]: script = response.xpath("//script[contains(., 'qubit_product_list')]/text()").extract()[0]
In [5]: data = pattern.search(script).group(1)
In [6]: json.loads(data)
Out[6]:
{u'6516-DBL-BLK': {u'category': u'',
u'currency': u'GBP',
u'description': u'Double Black',
u'id': u'6516',
u'name': u'Diamante Faux Leather Bed Frame',
u'sku_code': u'LPDF:DIAMANTE-BD',
u'stock': 100,
u'unit_price': 129.99,
u'unit_sale_price': 129.99,
u'url': u'/p/Diamante_Faux_Leather_Bed_Frame.htm'},
u'6516-DBL-WHT': {u'category': u'',
u'currency': u'GBP',
u'description': u'Double White',
u'id': u'6516',
u'name': u'Diamante Faux Leather Bed Frame',
u'sku_code': u'LPDF:DIAMANTE-WD',
u'stock': 100,
u'unit_price': 129.99,
u'unit_sale_price': 129.99,
u'url': u'/p/Diamante_Faux_Leather_Bed_Frame.htm'},
u'6516-KS-BLK': {u'category': u'',
u'currency': u'GBP',
u'description': u'Kingsize Black',
u'id': u'6516',
u'name': u'Diamante Faux Leather Bed Frame',
u'sku_code': u'LPDF:DIAMANTE-BK',
u'stock': 99,
u'unit_price': 149.99004,
u'unit_sale_price': 149.99004,
u'url': u'/p/Diamante_Faux_Leather_Bed_Frame.htm'},
u'6516-KS-WHT': {u'category': u'',
u'currency': u'GBP',
u'description': u'Kingsize White',
u'id': u'6516',
u'name': u'Diamante Faux Leather Bed Frame',
u'sku_code': u'LPDF:DIAMANTE-WK',
u'stock': 100,
u'unit_price': 154.98996,
u'unit_sale_price': 154.98996,
u'url': u'/p/Diamante_Faux_Leather_Bed_Frame.htm'}}
отправьте свои попытки. –
@AvinashRaj Вопрос обновлен – Volatil3