scrapy中发送post请求

1、可以使用`yield scrapy.FormRequest(url,formdata,callback)`方法发送POST请求。

 其中构造参数formdata可以是字典,也可以是可迭代的(key,value)元组,代表着需要提交的表单数据。

2、如果希望程序执行一开始就发送POST请求,可以重写Spider类的`start_requests(self)`方法,并且不再调用start_urls里的url。

import scrapy


class PostSpider(scrapy.Spider):
    name = 'post'
    allowed_domains = ['http://fanyi.youdao.com/']
    start_urls = ['http://http://fanyi.youdao.com//']


    #如果想要爬虫在一开始的时候就发送post请求,那么就需要在爬虫类中重写start_requests(self)方法,
    #并且不再调用start_urls里面的url,如果不重写start_requests(self)那么爬虫会自动获取start_urls里面的url
    
    def start_requests(self):
        url="http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"
        formdata = {
            "i": "狗",
            "from": "AUTO",
            "to": "AUTO",
            "smartresult": "dict",
            "client": "fanyideskweb",
            "salt": "16126984518491",
            "sign": "32f75e6c239f04d7c8c61d9e8abeb677",
            "ts": "1612698451849",
            "bv": "6a1ac4a5cc37a3de2c535a36eda9e149",
            "doctype": "json",
            "version": "2.1",
            "keyfrom": "fanyi.web",
            "action": "FY_BY_REALTlME"
        }
        yield scrapy.FormRequest(url=url,formdata=formdata,callback=self.parse)

    def parse(self, response):
        print('*'*20)
        print(response.text)
        print('*'*20)

 

上一篇:Kubernetes 弃用 Docker,Artifactory 新版本已经支持 OCI 镜像


下一篇:java-如何使用PostgreSQL而不是MySQL配置Artifactory?