scrapy: если FormRequest имеет jsessionid

Я практикую 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'

Как я могу решить вопрос?


person user2492364    schedule 25.08.2014    source источник


Ответы (1)


Что такое тип actId? Если это int, чем преобразовать actId в строку из int. В последних версиях scarpy требуется конвертация.

    yield FormRequest(url='http://xxx.tw/ca/toView?mtd=do', callback=self.parse3, formdata={'actId': str(actId)})  
person Tasawer Nawaz    schedule 25.08.2014