背景:我正在使用Scrapy从http://shop.nordstrom.com/c/mens-tshirts
中抓取和刮取产品数据。该页面是动态生成的,所以我使用Scrapy-Splash来处理JavaScript。问题是,单击页面底部的“下一步”按钮是进入后续产品页面的唯一方法。如果您复制第2页的该网址并将其粘贴到新标签中,则该网页上没有任何产品。使用Scrapy-splash导航动态页面
为了解决这个问题,我尝试使用Selenium中的.click()
函数导航到下一页,并使用driver.page_source
来提取页面的html。
问题:有没有一种方法可以将我解压缩到的Splash(在docker容器中运行)的html/javascript源代码传入,而不是传递一个url?我已经尝试在我的本地机器上保存html并传递文件路径,但是这会导致502 Bad Gateway,因为Splash会自动将“http://”预先添加到路径中。
也许有一个更好的方法来实现我的目标,如果是这样的话我愿意接受任何选择。请记住,该解决方案必须适合可扩展性和云部署。谢谢!
我正在使用Scrapy做实际的抓取,有没有办法将该html传递给Scrapy(代替url)。通常我只是在'RENDER_HTML_URL'上调用Scrapy,其中Splash呈现JS(在本地Docker容器中),但如果我可以避免在本地运行容器,那将是非常优选的。 另外,第二个Lua脚本是否实际渲染了JS?这是我首先使用Splash的全部原因。 – somedude
您可以将Splash中的HTML传递给Scrapy,并在Scrapy端处理它 - 调用“return splash:html”(检查链接教程)。但我不确定为什么你需要这个在第一个例子中,因为Selenum也处理JS。是的,第二个Lua脚本呈现JS,Splash默认是这样做的。 –