我只是在探索scrapy与飞溅,我试图从电子商务网站 gap其中一个产品,名称和价格刮所有产品(裤子)数据,但但我没有看到所有的动态产品数据加载,当我从飞溅的web用户界面看到splash web UI(只有16个项目正在装载虽然为每一个请求 - 不知道为什么) 我有以下选项尝试,但没有运气scrapy + splash:没有呈现整页JavaScript数据
- 增加等待时间高达20秒
- 通过启动docker“--disable-pr ivate模式“
- 通过使用lua_script滚动
- 随着视图报告的完整选项初始页面:set_viewport_full()
lua_script2 = """ function main(splash)
local num_scrolls = 10
local scroll_delay = 2.0
local scroll_to = splash:jsfunc("window.scrollTo")
local get_body_height = splash:jsfunc(
"function() {return document.body.scrollHeight;}"
)
assert(splash:go(splash.args.url))
splash:wait(splash.args.wait)
for _ = 1, num_scrolls do
scroll_to(0, get_body_height())
splash:wait(scroll_delay)
end
return splash:html()
end"""
yield SplashRequest(
url,
self.parse_product_contents,
endpoint='execute',
args={
'lua_source': lua_script2,
'wait': 5,
}
)
任何人都可以请一些线索对这种行为? ps:我正在使用scrapy框架,我能够从render.html解析产品信息(itemid,名称和价格)(但render.html只有16个项目信息)
如何使用API直接获取数据而不是这么多的努力? “http://www.gap.com/resources/productSearch/v1/search?cid=80799” –
嗨塔伦,谢谢你的答复。但我的目标是抓取网站上列出的每个产品(例如这里的每个裤子)并获得所有可用的裙子(例如,该裤子具有近23个尺寸(Skus),我可以从视图源看到[链接]( http://www.gap.com/browse/product.do?cid=80868&pcid=80799&vid=1&pid=844309052),我没有通过api找到,我是新的api方法,请给我一些资料 – Tez
I尝试使用** splash:set_viewport_full()**但没有运气,并试图与scrpay也像 **产量SplashRequest(url,self.parse_product_contents,args = {'等待':10,'视口':'完整' 'render_all':1},终点= 'render.html')** 仍然没有运气 但是,当我设置视图报告尺寸大尺寸 '飞溅:我看到set_viewport_size(1980,8020)' 内容吨装载,但仍然有限制。当我尝试增加png的尺寸时出现这个错误 '视口超出范围(20000x20000,area = 16000000)' – Tez