出于某种原因,我无法让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
我正在抓取的网址是:
试图获得第一个产品。
由于
答案 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'])
。