首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python selenium:可以取消driver.get()上的重定向吗?

问python selenium:可以取消driver.get()上的重定向吗?
EN

Stack Overflow用户
提问于 2015-01-05 15:24:13
回答 2查看 10.1K关注 0票数 4

有没有办法阻止url重定向?

代码语言:javascript
复制
driver.get('http://loginrequired.com')

这会将我重定向到另一个页面,但默认情况下,我希望它留在该页面而不重定向。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-05 20:00:19

用户所谓的“重定向”通常有两种方式:

  1. 您加载一个页面,该页面加载一些JavaScript代码,该代码执行测试并决定加载一个不同的页面。在某些浏览器中,可以通过按退出键来中断此过程。Selenium可以发送一个转义键。

但是,这种重定向可能会在Selenium将控制权交还给您的脚本之前发生。它在任何特定情况下是否有效取决于加载的页面。

  1. 你加载一个页面,得到一个HTTP3xx (301,303,304等)来自服务器的响应。用户没有机会在浏览器中中断这些重定向,因此Selenium不提供中断或阻止它们的方法。

因此,没有万无一失的方法来防止Selenium中的重定向。

票数 6
EN

Stack Overflow用户

发布于 2015-01-06 00:10:56

如果您不需要可视化页面,但可以访问"http://loginrequired.com“的源代码,那么使用Selenium和Scrapy就是一种解决方案。

基本上,您告诉Scrapy中间件停止重定向,并且当爬行器访问页面时,重定向处理重定向(302)。

在setting.py中,您必须设置

代码语言:javascript
复制
"REDIRECT_ENABLED=False"

爬虫代码是:

代码语言:javascript
复制
class LoginSpider(CrawlSpider):
    name = "login"
    allowed_domains = ['loginrequired.com']
    start_urls = ['http://loginrequired.com']
    handle_httpstatus_list = [302]

def __init__(self):
    self.driver = webdriver.Firefox()

def parse(self, response):
    if response.status in self.handle_httpstatus_list:
        return Request(url="http://loginrequired.com", callback=self.after_302)

def after_302(self, response):
    print response.url
    # Your code to analysis the page by here 

来自how to handle 302 redirect in scrapy的想法

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

https://stackoverflow.com/questions/27775048

复制
相关文章

相似问题

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