python selenium:是否可以取消driver.get()上的重定向?

2024-05-23 14:22:39 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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


Tags: comhttpurlgetdriver情况页面重定向
2条回答

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

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

在seting.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的想法

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

  1. 您加载一个页面,该页面加载一些JavaScript代码,这些代码执行测试并决定加载另一个页面。在某些浏览器中,按ESCAPE键可以中断此过程。硒可以发送一个转义键。

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

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

所以没有可靠的方法来阻止Selenium中的重定向。

相关问题 更多 >