2015-06-02 2 views
2

Я пытаюсь использовать scrapy для заполнения формы POST, чтобы попытаться заказать билеты на поезд.scrapy заполнение POST форма

Я думал, что класс FormRequest может это сделать, но я не могу иметь дело с формой javascript. Инструмент сканирования не возвращает ничего.

Для того, чтобы отправить форму, я не использовал ее.

import scrapy 

from scrapy.item import Item, Field 
from scrapy.http import FormRequest 
from scrapy.spider import BaseSpider 

class SncfItem(Item): 
title = Field() 
link = Field() 
desc = Field() 

class SncfSpider(scrapy.Spider): 
name = "sncf" 
allowed_domains = ["voyages-sncf.com"] 
start_urls = (
    'http://www.voyages-sncf.com/billet-train', 
) 

def parse(self, response): 

    yield FormRequest.from_response(response, 
            formname='saisie', 
            formdata={'ORIGIN_CITY': 'Gare de Lyon (Paris)', 
               'DESTINATION_CITY': 'Lyon Part-Dieu', 
               'OUTWARD_DATE': '03.06.2015'}, 
            callback=self.parse1) 

def parse1(self, response): 
    print response.status 

Может ли кто-нибудь сказать мне, пожалуйста, если я пропустил шаг при использовании mySpider?

Любая помощь была бы принята с благодарностью.
Спасибо-х

scrapy crawl sncf -o items.xml -t xml 
2015-06-01 23:13:54+0200 [sncf] INFO: Spider opened 
2015-06-01 23:13:54+0200 [sncf] INFO: Crawled 0 pages (at 0 pages/min),  scraped 0 items (at 0 items/min) 
2015-06-01 23:13:54+0200 [scrapy] DEBUG: Telnet console listening on 127.0.0.1:6024 
2015-06-01 23:13:54+0200 [scrapy] DEBUG: Web service listening on 127.0.0.1:6081 
2015-06-01 23:13:55+0200 [sncf] DEBUG: Crawled (200) <GET  http://www.voyages-sncf.com/billet-train> (referer: None) 
2015-06-01 23:13:56+0200 [sncf] DEBUG: Redirecting (302) to <GET http://www.voyages-sncf.com/billet-train> from <POST http://www.voyages- sncf.com/vsc/train-ticket/> 
2015-06-01 23:13:56+0200 [sncf] DEBUG: Crawled (200) <GET http://www.voyages-sncf.com/billet-train> (referer: http://www.voyages- sncf.com/billet-train) 
200 
2015-06-01 23:13:56+0200 [sncf] INFO: Closing spider (finished) 

ответ

2

Вы получаете редирект, поскольку формат даты является недействительным.

Я переигран, что запрос в Scrapy оболочки, выполнив следующие действия:

$ scrapy shell http://www.voyages-sncf.com/billet-train 
.... a few log messages later, I get a shell with the response... 
>>> # first I recreate the FormRequest per your code: 
>>> fr = FormRequest.from_response(response, 
            formname='saisie', 
            formdata={'ORIGIN_CITY': 'Gare de Lyon (Paris)', 
              'DESTINATION_CITY': 'Lyon Part-Dieu', 
              'OUTWARD_DATE': '03.06.2015'}) 
>>> # checked the url and method: 
>>> fr.url 
'http://www.voyages-sncf.com/vsc/train-ticket/' 
>>> fr.method 
'POST' 
>>> fetch(fr) # execute the request 
>>> view(response) # opened the result in browser 

Глядя на результат, я увидел сообщение об ошибке проверки для даты, говоря: «формат Le-де-ла дата d'Aller Que Vous avez saisi est wrong. Nous vous invitons util utiliser le calendrier. "

+0

Да, спасибо. Я не видел сообщение об ошибке, относящееся к дате. это работает '03/07/2015 '. Теперь я должен решить проблему «страницы ожидания», чтобы получить окончательный результат ... – Zoheir

Смежные вопросы