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'}
非常感谢!工作!但只是想知道是否有更好的方法来做到这一点,因为我必须从其他网站获取这些图像,以及不同的结构和命名。 – 2013-03-13 18:15:48
如果大图像的加载是通过javascript完成的,那么一旦页面被加载,url表单就不能通过xpath表达式来检索url,因为它们不存在于HTML页面的DOM中,而是仅在特定的用户交互之后。 (例如悬停在缩略图上等)。为这样的图像构建一个通用的刮板是一个相当复杂的问题,没有一个xpath会给你结果。 – Tamas 2013-03-13 19:02:08
好的,谢谢!在这种情况下,我希望这个替代的东西与其他这样的网站以及:) – 2013-03-14 16:33:50