scrapy爬虫:scrapy.FormRequest中formdata参数详解
简介
在使用 Scrapy 进行爬虫时,很多时候需要进行登录或者提交表单等操作。此时,就需要使用 Scrapy 的 FormRequest 来模拟提交表单。FormRequest 中 formdata 参数是其中重要的参数之一,本文将对该参数进行详细的讲解。
formdata 参数详解
formdata 参数是一个字典类型,包含了表单中所有需要提交的数据。这些数据需要按照表单中的字段名进行键值对的配对。示例如下:
formdata = {
'username': 'example_username',
'password': 'example_password'
}
示例一
下面我们进行一个实际的示例,来学习一下 formdata 参数的使用方法。在这个示例中,我们将使用 Scrapy 框架去爬取知乎中指定用户的关注者数量。由于知乎的登录界面是经过了加密处理的,我们需要获得其加密后的数据来模拟登录。在该示例中,我们将使用 FormRequest 与 formdata 来模拟表单的提交及登录操作。
在该示例中,我们将使用到以下库:
import scrapy
from scrapy.spiders import Spider
from scrapy import Request
from scrapy.http import FormRequest
我们将使用 FormRequest 来提交表单,并使用 formdata 参数来传递需要提交的数据:
formdata = {
'captcha_type': 'cn',
'email': 'example_email',
'password': 'example_password',
'remember_me': 'true'
}
return [FormRequest.from_response(response,
formdata=formdata,
callback=self.after_login)]
以上代码为我们模拟进行登录操作并将登录信息进行提交的代码。在这里,我们将 formdata 参数作为 FormRequest 的一个参数进行了传递。
示例二
现在我们来看一个更加简单的示例。在这个示例中,我们将使用 formdata 来提交表单,并获取返回的数据:
formdata = {
'keyword': 'Python'
}
return [FormRequest(url=url,
formdata=formdata,
callback=self.parse)]
以上代码为我们用 FormRequest 来提交表单、请求指定 URL 并获取返回数据的示例。在这里,我们依然将 formdata 作为 FormRequest 的参数来进行传递。
总结
在 Scrapy 爬虫中,FormRequest 是模拟表单提交操作中使用的非常重要的工具。在表单提交中,formdata 参数则是不可或缺的一个参数。通过本篇文章的学习,相信大家已经对该参数的使用方法以及表单提交有了初步的认识。