Я практикую FormRequest и столкнулся с проблемой
Во-первых, я просматриваю ссылку в def(parse) и получаю json обратно в def(parse1).
Затем я получаю actId
в json, который могу выдать запрос сканировать другие ссылки, но возникает такая ошибка:
ERROR: Spider error processing <POST http://xxx.tw/ca/to.do;jsessionid=A69C5203A49A12DA450F32E6B2AB0E23?mtd=Search&mId=604>
exceptions.TypeError: unicode_to_str must receive a unicode or str object, got int
Я думаю, это потому, что он доставляет jsessionid jsessionid=A69C5203A49A12DA450F32E6B2AB0E23
Потому что я отчаянно пытаюсь yield FormRequest(url='http://xxx.tw/ca/toView?mtd=do', callback=self.parse3, formdata={'actId': actId})
, и это работает хорошо.
Вот код:
def parse(self, response):
yield FormRequest.from_response(response,
formname='Form',
formdata={'when': '9',
'key': 'please input',
},
callback=self.parse1)
#<form name="Form" id="search" method="post" action="/ca/to?mtd=do&Id=4">
def parse1(self, response):
data = json.loads(response.body)
tryone = data.get('to')
for i in tryone:
actId = i['actId']
yield FormRequest(url='http://xxx.tw/ca/toView?mtd=do', callback=self.parse3, formdata={'actId': actId})
def parse3(self, response):
print response.status #200
print 'haha'
Как я могу решить вопрос?