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
一个解决方案是,如果您不需要可视化页面,但是访问“http://loginrequired.com”的源代码将是使用Selenium和Scrapy。
基本上,你告诉Scrapy中间件停止重定向,当蜘蛛访问页面时,重定向就是处理重定向(302)。
在seting.py中必须设置
蜘蛛代码是:
来自how to handle 302 redirect in scrapy的想法
用户称之为“重定向”的方式通常有两种:
您加载一个页面,该页面加载一些JavaScript代码,这些代码执行测试并决定加载另一个页面。在某些浏览器中,按ESCAPE键可以中断此过程。硒可以发送一个转义键。
不过,在Selenium将控制权交还给脚本之前,这种重定向可能会发生在之前。它在任何特定情况下是否有效取决于加载的页面。
加载一个页面并从服务器获得一个HTTP 3xx(301、303、304等)响应。用户没有机会在浏览器中中断这些重定向,因此Selenium不提供中断或阻止这些重定向的方法。
所以没有可靠的方法来阻止Selenium中的重定向。
相关问题 更多 >
编程相关推荐