получить пустую квадратную скобку на скорлупе - PullRequest
0 голосов
/ 19 марта 2020

Я получаю пустую квадратную скобку для этого xpath response.xpath( "//div[@class='c16H9d']").extract()

вот URL https://www.daraz.com.bd/audio/?spm=a2a0e.home.cate_2.2.49c74591NNpWDU

мой xpath не ошибается, тогда почему я получаю это пустая квадратная скобка?

>>>scrapy shell "https://www.daraz.com.bd/audio/?spm=a2a0e.home.cate_2.2.49c74591NNpWDU"
>>>response.xpath( "//div[@class='c16H9d']").extract()
>>>[]

1 Ответ

0 голосов
/ 19 марта 2020

Я вижу, что вы используете scrapy shell, и да, действительно, этот класс существует как первый элемент. Однако, если вы посмотрите на полный HTML, вы увидите этот тег

<script type="application/ld+json">

. По-видимому, он содержит JSON, который используется для заполнения переднего конца страницы. Таким образом, вы можете сделать что-то вроде этого, а затем импортировать json и использовать json загрузки, чтобы загрузить его в python объект.

response.css('script::text').extract()[-1]

Последний текст элементов скрипта содержит все json для списка продуктов на странице.

import json
data = json.loads(response.css('script::text').extract()[-1])
item_list = data['itemListElement']
for each in item_list:
    print(each['name'], each['price'])
...