@
laoyur 多谢,确实应该是回调 parse 方法。但是现在遇到另外一个问题:在回调重新登陆的 parse 方法如何更改 request 的 url 。现在代码结构为:
# 重新触发登陆
def re_login(self, reponse):
response = response.request.replace(url=login_page)
return [FormRequest.from_response(response,url="xxxx", formdata={xxx})] # 标记 1
# 分析页面元素并保存,如果页面上登陆标识不存在,报异常并触发 re_login
def parse_item(self, response):
try:
# download and parse page, when logout , check function raise IndexError exception
except IndexError:
self.log("------ start to login again ------")
self.post_login(response)
按照这种方法,可以正常执行到标记 1 处,在标记 1 处 request.url 是请求 item 的 url , 不是 login 页面的 url ,于是会报 from 找不到的错误。 通过 response.replace 方法更改 url 和 body 的值后请求未能成功。怀疑是 replace 那个方法用的有问题,暂时还没找到解决办法。有没有前辈遇到过相似问题?谢谢。