我正在尝试使用Scrapy抓取website。要获取我想要的内容,我需要先登录。网址是login_url
在那里我有如下形式:
我的代码如下:
LOGIN_URL1 = "https://www.partslink24.com/partslink24/user/login.do"
class PartsSpider(scrapy.Spider):
name = "parts"
login_url = LOGIN_URL1
start_urls = [
login_url,
]
def parse(self, response):
form_data = {
'accountLogin': COMPANY_ID,
'userLogin': USERNAME,
'loginBean.password': PASSWORD
}
yield FormRequest(url=self.login_url, formdata=form_data, callback=self.parse1)
def parse1(self, response):
inspect_response(response, self)
print("RESPONSE: {}".format(response))
def start_scraper(vin_number):
process = CrawlerProcess()
process.crawl(PartsSpider)
process.start()
但问题是,他们检查会话是否被激活,我得到一个错误,表单无法提交。
当我检查提交登录表单后得到的响应时,我得到以下错误:
在他们的网站上的代码,检查如下:
var JSSessionChecker = {
check: function()
{
if (!Ajax.getTransport())
{
alert('NO_AJAX_IN_BROWSER');
}
else
{
new Ajax.Request('/partslink24/checkSessionCookies.do', {
method:'post',
onSuccess: function(transport)
{
if (transport.responseText != 'true')
{
if (Object.isFunction(JSSessionChecker.showError)) JSSessionChecker.showError();
}
},
onFailure: function(e)
{
if (Object.isFunction(JSSessionChecker.showError)) JSSessionChecker.showError();
},
onException: function (request, e)
{
if (Object.isFunction(JSSessionChecker.showError)) JSSessionChecker.showError();
}
});
}
},
showError: function()
{
var errorElement = $('sessionCheckError');
if (errorElement)
{
errorElement.show();
}
}
};
JSSessionChecker.check();
如果成功,则只返回true。
在提交表单之前,是否有任何方法可以激活会话?
先谢谢你。
编辑
错误页面,我得到使用从@fam的答案.
1条答案
按热度按时间x6492ojm1#
请检查此代码。
我没有收到错误,响应如下:
**EDIT:**以下代码是Selenium的。它会让你很容易地登录到页面。你只需要下载chrome驱动程序并安装Selenium。
不要忘记更改凭据。