对于scrapy/selenium,有没有办法回到上一页?

Posted

技术标签:

【中文标题】对于scrapy/selenium,有没有办法回到上一页?【英文标题】:For scrapy/selenium is there a way to go back to a previous page? 【发布时间】:2015-07-30 17:44:53 【问题描述】:

我基本上有一个 start_url,其中包含我的 javascript 搜索表单和按钮,因此需要 selenium。我使用 selenium 在我的选择框对象中选择适当的项目,然后单击搜索按钮。下一页,我做了一些scrapy魔术。但是,现在我想回到原来的 start_url 并填写一个不同的对象等,然后重复直到不再。

基本上,我尝试过创建一个 for 循环并试图让浏览器返回到原始 response.url,但不知何故它崩溃了。我可能会尝试在顶部有一个重复的 start_url 列表供scrapy解析,但我不确定这是否是最好的方法。在我的情况下我能做什么?

【问题讨论】:

是否可以只使用 driver.get("url of start page") ?还是您需要以用户的方式返回? 我实际上可以做到这一点!我要试试这个和 driver.back() 方法,两者都会回答我的问题。 【参考方案1】:

这里的建议是使用 driver.back() :https://selenium-python.readthedocs.io/navigating.html#navigation-history-and-location

【讨论】:

谢谢!这正是它!根据我的问题,您是否建议一种更有效的方式来遍历所有条目,或者最好的方式是简单地倒退? 这是一个死链接。请在回答中包含相关内容。 因为@seba 没有更新他的答案(死链接)。您可以在此页面第 3.6 节中找到该命令:selenium-python.readthedocs.io/…【参考方案2】:

当前选择的答案提供了指向外部站点的链接,但该链接已损坏。 selenium 文档谈论

driver.forward()
driver.back()

但这些有时会失败,即使您明确使用了一些等待功能。

我找到了更好的解决方案。您可以使用以下命令向后导航。

driver.execute_script("window.history.go(-1)")

希望这对将来的其他人有所帮助。

【讨论】:

我发现“window.history.go(-2)”命令对于那些在你点击返回按钮而不是实际返回时只是刷新的奇怪网站很有帮助。 谢谢@user1610950 我看到脚本driver.execute_script("window.history.go(+1)") 也很高兴为我可靠地向前导航。【参考方案3】:

要在浏览器的历史记录中前后移动,请使用

driver.forward()
driver.back()

【讨论】:

以上是关于对于scrapy/selenium,有没有办法回到上一页?的主要内容,如果未能解决你的问题,请参考以下文章

Scrapy+selenium爬取简书全站

Scrapy+selenium爬取简书全站

Scrapy + selenium 为每个 url 请求两次

scrapy--selenium

scrapy+selenium 爬取淘宝

使用scrapy爬虫,爬取今日头条首页推荐新闻(scrapy+selenium+PhantomJS)