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

时间:2015-01-05 07:24:13

标签: python selenium webdriver

有没有办法阻止网址重定向?

driver.get('http://loginrequired.com')

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

2 个答案:

答案 0 :(得分:3)

用户称之为“重定向”的方式通常有两种:

  1. 您加载页面并且页面加载一些执行测试的JavaScript代码并决定加载不同的页面。通过按ESCAPE键可以在某些浏览器中中断此过程。 Selenium可以发送ESCAPE密钥。

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

  2. 您加载页面并从服务器获取HTTP 3xx(301,303,304等)响应。用户没有机会在浏览器中中断这些重定向,因此Selenium不提供中断或阻止它们的方法。

  3. 因此,没有必要的方法来阻止Selenium中的重定向。

答案 1 :(得分:-1)

解决方案,以防您不需要可视化页面但访问" http://loginrequired.com"的来源。将Selenium与Scrapy一起使用。

基本上你告诉Scrapy中间件停止重定向,当蜘蛛访问页面时,重定向处理重定向(302)。

在setting.py中你必须设置

"REDIRECT_ENABLED=False"

蜘蛛代码是:

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

的想法