有没有办法阻止网址重定向?
driver.get('http://loginrequired.com')
这会将我重定向到另一个页面,但我希望它保留在该页面上,而不会默认重定向。
答案 0 :(得分:3)
用户称之为“重定向”的方式通常有两种:
您加载页面并且页面加载一些执行测试的JavaScript代码并决定加载不同的页面。通过按ESCAPE键可以在某些浏览器中中断此过程。 Selenium可以发送ESCAPE密钥。
但是,在 Selenium将控制权交还给您的脚本之前,此重定向可能会发生。它是否适用于任何特定情况取决于正在加载的页面。
您加载页面并从服务器获取HTTP 3xx(301,303,304等)响应。用户没有机会在浏览器中中断这些重定向,因此Selenium不提供中断或阻止它们的方法。
因此,没有必要的方法来阻止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
的想法