2013-03-13 57 views
0

我正在使用Scrapy来抓取网页。我通过使用xpath Chrome扩展来获得XPath选择器,该扩展可以正常工作。我在产品页面上找到了我想要的所有东西,如描述,价格等。用于弹出图像的XPath

如果我点击一个项目的小图像,那个项目的大图像就会弹出,我想抓取这个大图像。但是我用于这个大图片的Xpath没有获取任何东西。另外,当我查看源代码时,它显示它使用JavaScript函数来加载这些弹出图像。有没有办法获取这些图像?

start_urls = ['http://www.flipkart.com/nokia-lumia-620/p/itmdgkwywkmaa2w4?pid=MOBDGH6AKH9ERJAF'] 

description = hxs.select('/html/body/div[@class=" fkart fksk-body line "]/div[@id="fk-mainbody-id"]/div[@class="fk-content fksk-content enable-compare line"]/div[@class="fk-mproduct fk-mproduct-mobile "]/div[@class="mprod-section unit"]/div[@id="topsection"]/div[@class="mprod-summary lastUnit"]/div[@class="mprod-summary-title fksk-mprod-summary-title"]/h1/text()').extract() 
price = hxs.select('/html/body/div/div/div/div/div/div/div/div/div/div/div/div/span/text()').extract() 

image_urls = hxs.select('/html/body/div[@class="fk-ui-dialog fk-popup"]/div[@class="window alpha30 window-absolute"]/div[@class="content"]/div[@class="dialog-body"]/div[@id="pp-large-images-popup"]/div[@class="main-container"]/div[@class="pp-carousel-bd"]/div[@class="visible-image-large fk-text-center"]/img[@id="visible-image-large"]').extract() 

结果:

{'description': [u'Nokia Lumia 620'], 
'image_urls': [], 
'price': u'14999'} 

回答

0

要获得图像的URL列表的小缩略图,你可以使用这个XPath:

//div[@class="thumbs thumbs-small"]/img/@src 

您可以得到大的图片的网址缩略图的网址。只需将40x40替换为275x275即可获得大图片的网址。

+0

非常感谢!工作!但只是想知道是否有更好的方法来做到这一点,因为我必须从其他网站获取这些图像,以及不同的结构和命名。 – 2013-03-13 18:15:48

+0

如果大图像的加载是通过javascript完成的,那么一旦页面被加载,url表单就不能通过xpath表达式来检索url,因为它们不存在于HTML页面的DOM中,而是仅在特定的用户交互之后。 (例如悬停在缩略图上等)。为这样的图像构建一个通用的刮板是一个相当复杂的问题,没有一个xpath会给你结果。 – Tamas 2013-03-13 19:02:08

+0

好的,谢谢!在这种情况下,我希望这个替代的东西与其他这样的网站以及:) – 2013-03-14 16:33:50