gpt4 book ai didi

javascript - (Python) Scrapy - 如何抓取 JS 下拉列表?

转载 作者:行者123 更新时间:2023-12-03 04:52:30 25 4
gpt4 key购买 nike

我想抓取此地址“大小”部分的 JavaScript 列表:

http://store.nike.com/us/en_us/pd/magista-opus-ii-tech-craft-2-mens-firm-ground-soccer-cleat/pid-11229710/pgid-11918119

我想要做的是获取库存尺寸,它将返回一个列表。我怎样才能做到这一点?

这是我的完整代码:

# -*- coding: utf-8 -*-
from scrapy import Spider
from scrapy.http import Request

class ShoesSpider(Spider):
name = "shoes"
allowed_domains = ["store.nike.com"]
start_urls = ['http://store.nike.com/us/en_us/pd/magista-opus-ii-tech-craft-2-mens-firm-ground-soccer-cleat/pid-11229710/pgid-11918119']

def parse(self, response):
shoes = response.xpath('//*[@class="grid-item-image-wrapper sprite-sheet sprite-index-0"]/a/@href').extract()
for shoe in shoes:
yield Request(shoe, callback=self.parse_shoes)

def parse_shoes(self, response):
name = response.xpath('//*[@itemprop="name"]/text()').extract_first()
price = response.xpath('//*[@itemprop="price"]/text()').extract_first()
#sizes = ??

yield {
'name' : name,
'price' : price,
'sizes' : sizes
}

谢谢

最佳答案

以下是提取库存尺码的代码。

import scrapy


class ShoesSpider(scrapy.Spider):
name = "shoes"
allowed_domains = ["store.nike.com"]
start_urls = ['http://store.nike.com/us/en_us/pd/magista-opus-ii-tech-craft-2-mens-firm-ground-soccer-cleat/pid-11229710/pgid-11918119']

def parse(self, response):
sizes = response.xpath('//*[@class="nsg-form--drop-down exp-pdp-size-dropdown exp-pdp-dropdown two-column-dropdown"]/option')


for s in sizes:
size = s.xpath('text()[not(parent::option/@class="exp-pdp-size-not-in-stock selectBox-disabled")]').extract_first('').strip()
yield{'Size':size}


结果如下:

中4/宽5.5
中号 4.5/宽 6
长 6.5/宽 8
中号7/宽8.5
中号 7.5/宽 9
中径8/宽9.5
中号 8.5/宽 10
中号 9/宽 10.5

在for循环中,如果我们这样写,它将提取所有尺寸,无论它们是否有库存。

size = s.xpath('text()').extract_first('').strip()


但是,如果您只想获得有库存的产品,则它们会标有“exp-pdp-size-not-in-stock selectBox-disabled”类,您必须通过添加以下内容来排除该类:

[not(parent::option/@class="exp-pdp-size-not-in-stock selectBox-disabled")]



我在其他鞋子页面上测试过,效果也很好。

关于javascript - (Python) Scrapy - 如何抓取 JS 下拉列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42594117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com