无法使用xpath获取图像

时间:2014-02-21 22:07:33

标签: xpath scrapy

出于某种原因,我无法让XPath正确并从Nordstrom.com获取产品图片,我正在使用Scrapy,继承我的代码,strPicture总是空出来:

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

试图获得第一个产品。

由于

1 个答案:

答案 0 :(得分:2)

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

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

无论如何,由于该div中没有​​任何进一步的图片,为什么不查询.//img/@data-original?同样适用于可以使用其类属性查询的标题,例如.//a[@class='title']/text()或更强大的data(.//a[@class='title'])