2014-02-21 102 views
1

出于某种原因,我不能得到正确的XPath和抓住从Nordstrom.com产品图像获得的图像,我使用Scrapy,继承人我的代码,该strPicture永远是空的:广东话使用XPath

from scrapy.spider import Spider 
from scrapy.selector import Selector 
from bed2.items import bed2Item 
import urlparse 

class MySpider(Spider): 
    name = "bed2" 
    allowed_domains = ["nordstrom.com,"nordstromimage.com"] 
    start_urls = ["http://shop.nordstrom.com/c/bedding-home?origin=leftnav#category=b60175057&type=category&marketingslots=2&page=1&defaultsize3=&size=&width=&color=&price=&brand=&instoreavailability=false&lastfilter=&sizeFinderId=0&resultsmode=&segmentId=0&sort=newest&sortreverse=0"] 

def parse(self, response): 
    hxs = Selector(response) 
    titles = hxs.xpath("//div[@class='fashion-item']") 
    items = [] 
    for titles in titles[:1]: 
     item = bed2Item() 
     item ["strTitle"] = titles.xpath("div[2]/a[1]/text()").extract() 
     item ["strLink"] = urlparse.urljoin(response.url, titles.xpath("div[2]/a[1]/@href").extract()[0]) 
     item ["strPrice"] = "0" 
     item ["strPicture"] = titles.xpath("a/div[1]/img/@src").extract() 
     items.append(item) 
    return items 

我刮网址是:

http://shop.nordstrom.com/c/bedding-home?origin=leftnav#category=b60175057&type=category&marketingslots=2&page=1&defaultsize3=&size=&width=&color=&price=&brand=&instoreavailability=false&lastfilter=&sizeFinderId=0&resultsmode=&segmentId=0&sort=newest&sortreverse=0

试图获得的第一个产品。

感谢

回答

2

查看源代码,我无法找到你要找检索图片的URL时锚标记。省略它。此外,加载页面后似乎发生了一些JavaScript魔术,图像URL存储在@data-original中。

item ["strPicture"] = titles.xpath("div[1]/div/img/@data-original").extract() 

无论如何,因为没有在该专区任何进一步的图片,为什么不直接查询.//img/@data-original?同样适用于可以利用其属性属性查询的标题,如.//a[@class='title']/text()或更加健壮的data(.//a[@class='title'])

+0

谢谢Jens,关于javascript改变源码的好点! –