发痒填表

2024-04-19 23:06:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用scrapy来填一张表格,试着订火车票。在

我以为FormRequest类可以完成这个任务,但是我不能处理javascript表单。Scrapy crawler什么也不返回。在

我使用的文件足以发送表单。在

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时遗漏了一步,有人能告诉我吗?在

如有任何帮助,我们将不胜感激。
谢谢

^{pr2}$

Tags: fromimportselfcomhttp表单fieldresponse
1条回答
网友
1楼 · 发布于 2024-04-19 23:06:06

由于日期格式无效,您将获得重定向。在

我在Scrapy shell中重放了这个请求,执行了以下操作:

$ 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 format de la date d'aller que vous avez saisi est incorrect。“我们的日历利用率很高。”

相关问题 更多 >