【问题标题】:scrapy form-filling when form posts to a second web page当表单发布到第二个网页时,scrapy form-filling
【发布时间】:2015-05-04 19:39:13
【问题描述】:

scrapy 的新手,想知道是否有人可以将我指向一个示例项目,使用 scrapy 提交到具有隐藏字段的 HTML 表单,以防表单的操作页面与表单本身呈现的地址不同。

在 Scrapy 中最简单的方法是什么?我可以看到您可以编写两个蜘蛛 - 第一个获取带有表单的 html 并选择所有隐藏字段,然后第二个使用带有隐藏字段的信息来提交表单。

我想知道是否有一个 1 步过程来代替(当 Scrapy 请求文档说使用 FormRequest.from_response 将处理隐藏字段时,它似乎假设它们都在同一页面上)。如果是这样,有人可以告诉我在哪里可以找到第一步流程的步骤吗?

【问题讨论】:

  • 到目前为止你做了什么?用你的代码更新你的问题。

标签: python scrapy


【解决方案1】:

FormRequest扩展了Request对象。因此,您可以使用FormRequest.from_response 获取包含隐藏值的formdata,如果需要,之后更改url

演示伪代码:

class ExampleSpider(scrapy.Spider):
    name = 'example.com'
    start_urls = ['http://www.example.com/FormPage.php']

    def parse(self, response):
        request = scrapy.FormRequest.from_response(
            response,
            callback=self.parse_response_from_Form
        )
        request.replace(url='http://www.other-site.com/')
        return request

    def parse_response_from_Form(self, response):
        # go on here...
        pass

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多