使用python-Scrapy抓取动态内容

免责声明:我在StackOverflow上看到过许多其他类似的帖子,并尝试以相同的方式进行操作,但是它们似乎在此网站上不起作用。

我正在使用Python-Scrapy从koovs.com获取数据。

但是,我无法获得动态生成的产品尺寸。具体来说,如果有人可以引导我从此链接的下拉菜单中获取“不可用”尺寸标签,我将不胜感激。

我可以静态获取尺寸列表,但这样做只能得到尺寸列表,但不能获得其中的一个。

回答:

你也可以使用ScrapyJS(无需selenium使用真正的浏览器)解决该问题:

该库使用Splash提供了Scrapy + JavaScript集成。

按照安装说明SplashScrapyJS,启动飞溅泊坞窗容器:

$ docker run -p 8050:8050 scrapinghub/splash

将以下设置放入settings.py

SPLASH_URL = 'http://192.168.59.103:8050' 

DOWNLOADER_MIDDLEWARES = {

'scrapyjs.SplashMiddleware': 725,

}

DUPEFILTER_CLASS = 'scrapyjs.SplashAwareDupeFilter'

这是你的示例蜘蛛,它可以查看尺寸可用性信息:

# -*- coding: utf-8 -*-

import scrapy

class ExampleSpider(scrapy.Spider):

name = "example"

allowed_domains = ["koovs.com"]

start_urls = (

'http://www.koovs.com/only-onlall-stripe-ls-shirt-59554.html?from=category-651&skuid=236376',

)

def start_requests(self):

for url in self.start_urls:

yield scrapy.Request(url, self.parse, meta={

'splash': {

'endpoint': 'render.html',

'args': {'wait': 0.5}

}

})

def parse(self, response):

for option in response.css("div.select-size select.sizeOptions option")[1:]:

print option.xpath("text()").extract()

这是控制台上打印的内容:

[u'S / 34 -- Not Available']

[u'L / 40 -- Not Available']

[u'L / 42']

以上是 使用python-Scrapy抓取动态内容 的全部内容, 来源链接: utcz.com/qa/423040.html

回到顶部