首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Scrapy-splash导航动态页

使用Scrapy-splash导航动态页
EN

Stack Overflow用户
提问于 2017-07-17 21:35:33
回答 1查看 1.7K关注 0票数 1

背景:我正在使用Scrapy从http://shop.nordstrom.com/c/mens-tshirts抓取和刮取产品数据。页面是动态生成的,所以我使用Scrapy来处理JavaScript。问题是,单击页面底部的"Next“按钮是进入后续产品页面的唯一方法。如果您复制第2页的url并将其粘贴到一个新的选项卡中,则该页上没有产品。

为了解决这个问题,我尝试使用Selenium中的.click()函数导航到下一个页面,并使用driver.page_source提取页面的html。

问题:是否有一种方法将我提取的html/javascript源代码传递到Splash (在码头容器中运行),而不是传递一个url?我尝试在本地机器上保存html并传递文件路径,但结果是产生了502坏网关,因为Splash会自动将'http://‘’添加到路径中。

也许这里有一个更好的方法来实现我的目标,如果是这样的话,我愿意接受任何选择。请记住,该解决方案必须适合可伸缩性和云部署。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2017-07-20 20:31:25

您可以编写一个调用内容的Splash脚本,而不是接受一个URL,如下所示:

代码语言:javascript
复制
function main(splash, args)
    assert(splash:set_content(args.html_source))
    -- page is loaded, process it as needed
end

您还可以单击Splash本身中的一个按钮-请参见点击,如下所示:

代码语言:javascript
复制
function main(splash, args)
    assert(splash:go(args.url))
    splash:select('.next'):mouse_click()
    splash:wait(5.0) 
    return splash:html()
end

有关更多信息,请查看教程Lua API概述。您可以像Selenium中那样与页面交互;并不是所有的Selenium帮助程序都可用,但基本知识是存在的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45154034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档