как очистить названия продуктов с веб-сайта с помощью scrapy shell

Пожалуйста, помогите мне очистить названия продуктов по этой ссылке: http://www.gap.com/browse/category.do?cid=5168&scrollTo=product353401012&scrollTo=product353401012#pageId=0&department=75

Названия продуктов содержатся в class="product-card--name", который находится в div. Когда я запускаю :response.css('div.product-card--name::text').extract(), он возвращает пустой список.

Пожалуйста, предоставьте команды css и xpath.


person Light    schedule 05.12.2016    source источник
comment
Контент приходит с запросами AJAX. Таким образом, вы будете использовать URL-адрес тех. (это gap.com/resources/productSearch/v1/ search?cid=5168 и в формате JSON)   -  person Gabriele Petrioli    schedule 05.12.2016


Ответы (1)


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

  • Открытие веб-сайта для удаления в Chrome (в Firefox также есть способ сделать это)
  • Нажмите F12, чтобы открыть DevTools.
  • Выберите вкладку «Сеть»
  • Выберите «XHR» в качестве фильтра
  • Выполните поиск (или перезагрузите сайт)

фильтр XHR

Вы увидите список предметов, который вам нужен:

search?cid=5168&isFacetsEnabled=true&globalShippingCountryCode=&globalShippingCurrencyCode=&locale=en_US&pageId=0

и если вы нажмете на него, вы увидите http-запрос с заголовками и ответ со всеми данными, которые вы хотите.

Чтобы сделать это на scrapy, это немного сложнее, вам нужно удалить эту ссылку, но используя метод «POST» вместо стандартного («GET»). Чтобы сделать это из скребкового паука:

yield scrapy.Request(url, self.parse_data, method="POST", headers=headers, body=body)

Там, где URL-адрес должен быть тем, который вы нашли в фильтре XHR, используется метод «POST», вы должны скопировать заголовки, которые мы нашли ранее, и в теле будут все параметры, относящиеся к тому, что вы ищете. От этого вы получите ответ JSON, который вы можете сохранить в файл или делать все, что хотите.

Если вам нужна дополнительная информация, дайте мне знать.

person vmmc    schedule 05.12.2016
comment
Не могли бы вы помочь мне с полным кодом для получения названий продуктов. Я новичок в очистке. И почему нельзя очистить названия продуктов, даже если они в HTML. Нажмите здесь. - person Light; 06.12.2016