发起post请求

  之前我们一直使用的都是get请求,但是我们也并没有指定。那是因为,当引擎检测到start_urls里面的url时会自动触发事务,发起start_requests()请求,这个默认就是get请求。

所以需要重写这个方法。

不多说,直接看代码

# -*- coding: utf-8 -*-
import scrapy

#需求:百度翻译中指定词条对应的翻译结果进行获取
class PostdemoSpider(scrapy.Spider):
    name = 'postDemo'
    #allowed_domains = ['www.baidu.com']
    start_urls = ['https://fanyi.baidu.com/sug']

    #该方法其实是父类中的一个方法:该方法可以对star_urls列表中的元素进行get请求的发送
    #发起post:
        #方法1.将Request方法中method参数赋值成post
        #方法2.FormRequest()可以发起post请求(推荐)
    def start_requests(self):
        print('start_requests()')
        #post请求的参数
        data = {
            'kw': 'dog',
        }
        for url in self.start_urls:
            #formdata:请求参数对应的字典
            yield scrapy.FormRequest(url=url,formdata=data,callback=self.parse)

    def parse(self, response):
        print(response.text)
原文地址:https://www.cnblogs.com/yuliangkaiyue/p/10032759.html