使用Scrapy获取与Ajax隐藏的大小相关的数据

2024-06-07 08:26:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望从以下url中获取与产品尺寸相关的详细信息:

http://www.tennisexpress.com/k-swiss-mens-ultra-express-tennis-shoes-black-fade-and-electric-blue-38191

我很难在上面页面的Select Size下拉列表中找到信息(7-库存,7.5-库存5+等)

在调试器模式下,我可以查看代码中的位,并尝试使用下面的Xpath来获取它,但运气不佳。在

item["Sizes"] = sel.xpath("//select[@name='siz']/option/text()").extract()

我想它们可能被Ajax隐藏了。希望能帮上忙。在


Tags: comhttpurl产品尺寸www库存详细信息
1条回答
网友
1楼 · 发布于 2024-06-07 08:26:26

问题是大小位于从不同url加载的iframe内。换句话说,首先,您需要从iframesrc属性中获取url,然后向该url发出请求并提取大小。在

演示(使用^{}):

$ scrapy shell http://www.tennisexpress.com/k-swiss-mens-ultra-express-tennis-shoes-black-fade-and-electric-blue-38191
>>> from urlparse import urljoin
>>> url = 'http://www.tennisexpress.com/'
>>> path = response.xpath('//div[@id="prodPurchasing"]/iframe/@src').extract()[0]
>>> url = urljoin(url, path)
>>> fetch(url)
>>> response.xpath("//select[@name='siz']/option/text()").re(r'[\.0-9]+')
[u'7', u'7.5', u'8', u'8.5', u'9', u'9.5', u'10', u'10.5', u'11', u'11.5', u'12', u'13']

仅供参考,要从select选项中筛选出实际大小,我使用re()这里,请参见:

[\.0-9]+将匹配一个或多个数字或点。在

相关问题 更多 >

    热门问题