我希望从以下网址中删除与产品尺寸相关的详细信息:
我在查找上页选择尺寸下拉列表中的信息时遇到困难(7 - 有货,7.5 - 有库存5+等)
在调试器模式下,我可以查看代码中的位,并尝试使用以下Xpath抓取它,但没有运气。
item["Sizes"] = sel.xpath("//select[@name='siz']/option/text()").extract()
我认为他们可能被Ajax隐藏了。希望对此有所帮助。
答案 0 :(得分:1)
问题是这些尺寸位于从不同网址加载的iframe
内。换句话说,首先,您需要从iframe
的{{1}}属性中获取网址,然后向该网址发出请求并提取尺寸。
演示(使用scrapy shell
):
src
仅供参考,要从选择选项中筛选出实际尺寸,我在这里使用$ 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']
,请参阅:
re()
会匹配一个或多个数字或点。