如何发送带有头和有效负载的Post请求 [英] How to send a Post requests with headers and payload in scrapy

查看:87
本文介绍了如何发送带有头和有效负载的Post请求的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试向Graph API发送发布请求,但我成功了,但是我想在scrapy中发送相同的请求,但是我不知道如何在带有标题和有效负载的scrapy中发送发布请求./p>

这是我的代码

 导入请求url ='https://www.kickstarter.com/graph'标头= {'authority':'www.kickstarter.com','method':'POST','路径':'/图','方案':'https','接受':'*/*','accept-encoding':'gzip,deflate,br','accept-language':'en-US,en; q = 0.9','content-length':'606','content-type':'application/json','cookie':" vis = f5761fb0e1994852-b38b5b3d46161036-c3a4a56c5add1076v1;lang = en;woe_id = YzFrZ1NUV1lRTUhMT2tsc1ZURHVsQT09LS12L0pidVVCeDBHZU16dk81MmVpeTNBPT0%3D--468e7c1e5daf8c17cdd902b0a1cb1ef4e2856543;optimize_current_variations =%7B%7D;_pxhd = 75f70796791b6f8a5930b19c70bcd30d268fe4a4f1644460c7c7bbe65d5e8196:837ba981-9d56-11eb-841e-e7065f1f0101;_pxvid = 837ba981-9d56-11eb-841e-e7065f1f0101;ajs_anonymous_id =%22f5761fb0e1994852-b38b5b3d46161036-c3a4a56c5add1076v1%22;_ga = GA1.2.17378398.1618428050;_gid = GA1.2.1258279558.1618428050;__ssid = 3d59a55ffedce2904d3464e3a555309;em_cdn_uid = t%3D1618428051657%26u%3D8d620439ed7740b89c98770bbaee8b05;__stripe_mid = e4e89c20-83c7-4ba0-907b-7b83f8b24051e87f22;em_p_uid = l:1618428053354 | t:1618428053353 | u:c814f9e5a157438b910a57075a7fe320;__stripe_sid = eaa7f9e2-2ba2-45db-8213-c79be847d1100aa907;ajs_anonymous_id =%22f5761fb0e1994852-b38b5b3d46161036-c3a4a56c5add1076v1%22;last_page = https%3A%2F%2Fwww.kickstarter.com%2Fprojects%2F1202256831%2Flumicube-led-cube-kit-for-the-raspberry-pi%3Fref%3D404-ksr10;local_offset = -2528;_gat_creatorAnalytics = 1;_gat = 1;_px2 = eyJ1IjoiNmMwYTZiODAtOWRkMS0xMWViLTkyNzItOWRkZDk3Y2VlODdkIiwidiI6IjgzN2JhOTgxLTlkNTYtMTFlYi04NDFlLWU3MDY1ZjFmMDEwMSIsInQiOjE2MTg0ODExMzU4NzksImgiOiJhZWM4ZDc0MjgwM2IzZGFlY2JiZWNkZjYxNjc0Yjg4MWY5YWRhNTVkOTRiNDk5NjhmNzdmZWZjMzUzMmZkMDRiIn0 =;_ksr_session = NEVzc0R3N0tIZHNsVlBoVzNQQ3haUXBCeC9jaWY4MExzbjNnNzZ0V3ZTTE1BcE1hcC94eFZVSTVUdXc4anJLRVJ3Zk81MVByNDVhdEhyaW9lZHNGa1l1OGdDTjhZN0FvUjd3Z1ZZRW8vb2x2ZGhsTm1Bb2N5TnV6TklEOFV5YzFBYzg5VHUzS3VPakpDT3pVQlgvY21RPT0tLXIzcFlXVFFsbG9Gc3JJRS9IU3VEdlE9PQ%3D%3D  -  1d66e41aef503bec8ea9d964160d776cee928583;request_time =星期四%2C + 15 + Apr + 2021 + 10%3A00%3A53 + -0000,'起源':'https://www.kickstarter.com','referer':'https://www.kickstarter.com/projects/818583073/dies-irae-day-of-wrath-rated-r/description','User-Agent':'Mozilla/5.0(Windows NT 10.0; Win64; x64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/89.0.4389.114 Safari/537.36','x-csrf-token':'KFhfbaWae3u6BzTKoYZDw65CrYUk1NMQnI4zVruvfKspDvFRlIjlFY/HESrLol2iGX/+ W1Yqww40nFqfgBdL7Q =='}urrl ='818583073/dies-irae-day-of-wrath-rated-r'有效负载= {"operationName":广告系列",变量":{"slug":urrl},"query":"query Campaign($ slug:String!){{n project(slug:$ slug){\ n id \ n isSharingProjectBudget \ n风险\ n故事(assetWidth:680)\ n货币\ n电子表格{\ n displayMode \ n public \ n url \ n数据{\ n名称\ n值\ n阶段\ n rowNum \ n __typename \ n} \ n dataLastUpdatedAt \ n __typename \ n} \ n EnvironmentalCommitments {\ n id \ n commitCategory \ n description \ n __typename \ n} \ n __typename \ n} \ n} \ n}r = request.post(URL,headers = headers,data = json.dumps(payload)) 

请任何人都可以指导我如何迅速发送相同的请求

解决方案

 导入scrapy类Kickstarter(scrapy.Spider):名称='kickstarter'def start_requests():url ='https://www.kickstarter.com/graph'标头= {'authority':'www.kickstarter.com','method':'POST','路径':'/图','方案':'https','接受':'*/*','accept-encoding':'gzip,deflate,br','accept-language':'en-US,en; q = 0.9','content-length':'606','content-type':'application/json','cookie':" vis = f5761fb0e1994852-b38b5b3d46161036-c3a4a56c5add1076v1;lang = en;woe_id = YzFrZ1NUV1lRTUhMT2tsc1ZURHVsQT09LS12L0pidVVCeDBHZU16dk81MmVpeTNBPT0%3D--468e7c1e5daf8c17cdd902b0a1cb1ef4e2856543;optimize_current_variations =%7B%7D;_pxhd = 75f70796791b6f8a5930b19c70bcd30d268fe4a4f1644460c7c7bbe65d5e8196:837ba981-9d56-11eb-841e-e7065f1f0101;_pxvid = 837ba981-9d56-11eb-841e-e7065f1f0101;ajs_anonymous_id =%22f5761fb0e1994852-b38b5b3d46161036-c3a4a56c5add1076v1%22;_ga = GA1.2.17378398.1618428050;_gid = GA1.2.1258279558.1618428050;__ssid = 3d59a55ffedce2904d3464e3a555309;em_cdn_uid = t%3D1618428051657%26u%3D8d620439ed7740b89c98770bbaee8b05;__stripe_mid = e4e89c20-83c7-4ba0-907b-7b83f8b24051e87f22;em_p_uid = l:1618428053354 | t:1618428053353 | u:c814f9e5a157438b910a57075a7fe320;__stripe_sid = eaa7f9e2-2ba2-45db-8213-c79be847d1100aa907;ajs_anonymous_id =%22f5761fb0e1994852-b38b5b3d46161036-c3a4a56c5add1076v1%22;last_page = https%3A%2F%2Fwww.kickstarter.com%2Fprojects%2F1202256831%2Flumicube-led-cube-kit-for-the-raspberry-pi%3Fref%3D404-ksr10;local_offset = -2528;_gat_creatorAnalytics = 1;_gat = 1;_px2 = eyJ1IjoiNmMwYTZiODAtOWRkMS0xMWViLTkyNzItOWRkZDk3Y2VlODdkIiwidiI6IjgzN2JhOTgxLTlkNTYtMTFlYi04NDFlLWU3MDY1ZjFmMDEwMSIsInQiOjE2MTg0ODExMzU4NzksImgiOiJhZWM4ZDc0MjgwM2IzZGFlY2JiZWNkZjYxNjc0Yjg4MWY5YWRhNTVkOTRiNDk5NjhmNzdmZWZjMzUzMmZkMDRiIn0 =;_ksr_session = NEVzc0R3N0tIZHNsVlBoVzNQQ3haUXBCeC9jaWY4MExzbjNnNzZ0V3ZTTE1BcE1hcC94eFZVSTVUdXc4anJLRVJ3Zk81MVByNDVhdEhyaW9lZHNGa1l1OGdDTjhZN0FvUjd3Z1ZZRW8vb2x2ZGhsTm1Bb2N5TnV6TklEOFV5YzFBYzg5VHUzS3VPakpDT3pVQlgvY21RPT0tLXIzcFlXVFFsbG9Gc3JJRS9IU3VEdlE9PQ%3D%3D  -  1d66e41aef503bec8ea9d964160d776cee928583;request_time =星期四%2C + 15 + Apr + 2021 + 10%3A00%3A53 + -0000,'起源':'https://www.kickstarter.com','referer':'https://www.kickstarter.com/projects/818583073/dies-irae-day-of-wrath-rated-r/description','User-Agent':'Mozilla/5.0(Windows NT 10.0; Win64; x64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/89.0.4389.114 Safari/537.36',}urrl ='818583073/dies-irae-day-of-wrath-rated-r'有效负载= {"operationName":广告系列",变量":{"slug":urrl},"query":"query Campaign($ slug:String!){{n project(slug:$ slug){\ n id \ n isSharingProjectBudget \ n风险\ n故事(assetWidth:680)\ n货币\ n电子表格{\ n displayMode \ n public \ n url \ n数据{\ n名称\ n值\ n阶段\ n rowNum \ n __typename \ n} \ n dataLastUpdatedAt \ n __typename \ n} \ n EnvironmentalCommitments {\ n id \ n commitCategory \ n description \ n __typename \ n} \ n __typename \ n} \ n} \ n}产生scrapy.FormRequest(URL,formdata = payload,headers = headers,method ='POST')def parse(自身,响应):打印('成功...') 

I am trying to send a post requests to Graph API and I am succeed in it but I want to send the same requests in scrapy but I don't know how to send a post requests in scrapy with headers and payload.

Here is my code

import requests

url = 'https://www.kickstarter.com/graph'
headers =  {'authority':'www.kickstarter.com',
'method':'POST',
'path':'/graph',
'scheme':'https',
'accept':'*/*',
'accept-encoding':'gzip, deflate, br',
'accept-language':'en-US,en;q=0.9',
'content-length':'606',
'content-type':'application/json',
'cookie':"vis=f5761fb0e1994852-b38b5b3d46161036-c3a4a56c5add1076v1; lang=en; woe_id=YzFrZ1NUV1lRTUhMT2tsc1ZURHVsQT09LS12L0pidVVCeDBHZU16dk81MmVpeTNBPT0%3D--468e7c1e5daf8c17cdd902b0a1cb1ef4e2856543; optimizely_current_variations=%7B%7D; _pxhd=75f70796791b6f8a5930b19c70bcd30d268fe4a4f1644460c7c7bbe65d5e8196:837ba981-9d56-11eb-841e-e7065f1f0101; _pxvid=837ba981-9d56-11eb-841e-e7065f1f0101; ajs_anonymous_id=%22f5761fb0e1994852-b38b5b3d46161036-c3a4a56c5add1076v1%22; _ga=GA1.2.17378398.1618428050; _gid=GA1.2.1258279558.1618428050; __ssid=3d59a55ffedce2904d3464e3a555309; em_cdn_uid=t%3D1618428051657%26u%3D8d620439ed7740b89c98770bbaee8b05; __stripe_mid=e4e89c20-83c7-4ba0-907b-7b83f8b24051e87f22; em_p_uid=l:1618428053354|t:1618428053353|u:c814f9e5a157438b910a57075a7fe320; __stripe_sid=eaa7f9e2-2ba2-45db-8213-c79be847d1100aa907; ajs_anonymous_id=%22f5761fb0e1994852-b38b5b3d46161036-c3a4a56c5add1076v1%22; last_page=https%3A%2F%2Fwww.kickstarter.com%2Fprojects%2F1202256831%2Flumicube-an-led-cube-kit-for-the-raspberry-pi%3Fref%3D404-ksr10; local_offset=-2528; _gat_creatorAnalytics=1; _gat=1; _px2=eyJ1IjoiNmMwYTZiODAtOWRkMS0xMWViLTkyNzItOWRkZDk3Y2VlODdkIiwidiI6IjgzN2JhOTgxLTlkNTYtMTFlYi04NDFlLWU3MDY1ZjFmMDEwMSIsInQiOjE2MTg0ODExMzU4NzksImgiOiJhZWM4ZDc0MjgwM2IzZGFlY2JiZWNkZjYxNjc0Yjg4MWY5YWRhNTVkOTRiNDk5NjhmNzdmZWZjMzUzMmZkMDRiIn0=; _ksr_session=NEVzc0R3N0tIZHNsVlBoVzNQQ3haUXBCeC9jaWY4MExzbjNnNzZ0V3ZTTE1BcE1hcC94eFZVSTVUdXc4anJLRVJ3Zk81MVByNDVhdEhyaW9lZHNGa1l1OGdDTjhZN0FvUjd3Z1ZZRW8vb2x2ZGhsTm1Bb2N5TnV6TklEOFV5YzFBYzg5VHUzS3VPakpDT3pVQlgvY21RPT0tLXIzcFlXVFFsbG9Gc3JJRS9IU3VEdlE9PQ%3D%3D--1d66e41aef503bec8ea9d964160d776cee928583; request_time=Thu%2C+15+Apr+2021+10%3A00%3A53+-0000",
'origin':'https://www.kickstarter.com',
'referer':'https://www.kickstarter.com/projects/818583073/dies-irae-day-of-wrath-rated-r/description',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36',
'x-csrf-token':'KFhfbaWae3u6BzTKoYZDw65CrYUk1NMQnI4zVruvfKspDvFRlIjlFY/HESrLol2iGX/+W1Yqww40nFqfgBdL7Q=='
}
urrl = '818583073/dies-irae-day-of-wrath-rated-r'
payload = {"operationName":"Campaign","variables":{"slug":urrl},"query":"query Campaign($slug: String!) {\n  project(slug: $slug) {\n    id\n    isSharingProjectBudget\n    risks\n    story(assetWidth: 680)\n    currency\n    spreadsheet {\n      displayMode\n      public\n      url\n      data {\n        name\n        value\n        phase\n        rowNum\n        __typename\n      }\n      dataLastUpdatedAt\n      __typename\n    }\n    environmentalCommitments {\n      id\n      commitmentCategory\n      description\n      __typename\n    }\n    __typename\n  }\n}\n"}

r = requests.post(url, headers=headers, data=json.dumps(payload))

Please anyone can guide me how I can send this same requests in scrapy

解决方案

import scrapy

class Kickstarter(scrapy.Spider):
    name = 'kickstarter'

    def start_requests(self):
        url = 'https://www.kickstarter.com/graph'
        headers =  {'authority':'www.kickstarter.com',
                    'method':'POST',
                    'path':'/graph',
                    'scheme':'https',
                    'accept':'*/*',
                    'accept-encoding':'gzip, deflate, br',
                    'accept-language':'en-US,en;q=0.9',
                    'content-length':'606',
                    'content-type':'application/json',
                    'cookie':"vis=f5761fb0e1994852-b38b5b3d46161036-c3a4a56c5add1076v1; lang=en; woe_id=YzFrZ1NUV1lRTUhMT2tsc1ZURHVsQT09LS12L0pidVVCeDBHZU16dk81MmVpeTNBPT0%3D--468e7c1e5daf8c17cdd902b0a1cb1ef4e2856543; optimizely_current_variations=%7B%7D; _pxhd=75f70796791b6f8a5930b19c70bcd30d268fe4a4f1644460c7c7bbe65d5e8196:837ba981-9d56-11eb-841e-e7065f1f0101; _pxvid=837ba981-9d56-11eb-841e-e7065f1f0101; ajs_anonymous_id=%22f5761fb0e1994852-b38b5b3d46161036-c3a4a56c5add1076v1%22; _ga=GA1.2.17378398.1618428050; _gid=GA1.2.1258279558.1618428050; __ssid=3d59a55ffedce2904d3464e3a555309; em_cdn_uid=t%3D1618428051657%26u%3D8d620439ed7740b89c98770bbaee8b05; __stripe_mid=e4e89c20-83c7-4ba0-907b-7b83f8b24051e87f22; em_p_uid=l:1618428053354|t:1618428053353|u:c814f9e5a157438b910a57075a7fe320; __stripe_sid=eaa7f9e2-2ba2-45db-8213-c79be847d1100aa907; ajs_anonymous_id=%22f5761fb0e1994852-b38b5b3d46161036-c3a4a56c5add1076v1%22; last_page=https%3A%2F%2Fwww.kickstarter.com%2Fprojects%2F1202256831%2Flumicube-an-led-cube-kit-for-the-raspberry-pi%3Fref%3D404-ksr10; local_offset=-2528; _gat_creatorAnalytics=1; _gat=1; _px2=eyJ1IjoiNmMwYTZiODAtOWRkMS0xMWViLTkyNzItOWRkZDk3Y2VlODdkIiwidiI6IjgzN2JhOTgxLTlkNTYtMTFlYi04NDFlLWU3MDY1ZjFmMDEwMSIsInQiOjE2MTg0ODExMzU4NzksImgiOiJhZWM4ZDc0MjgwM2IzZGFlY2JiZWNkZjYxNjc0Yjg4MWY5YWRhNTVkOTRiNDk5NjhmNzdmZWZjMzUzMmZkMDRiIn0=; _ksr_session=NEVzc0R3N0tIZHNsVlBoVzNQQ3haUXBCeC9jaWY4MExzbjNnNzZ0V3ZTTE1BcE1hcC94eFZVSTVUdXc4anJLRVJ3Zk81MVByNDVhdEhyaW9lZHNGa1l1OGdDTjhZN0FvUjd3Z1ZZRW8vb2x2ZGhsTm1Bb2N5TnV6TklEOFV5YzFBYzg5VHUzS3VPakpDT3pVQlgvY21RPT0tLXIzcFlXVFFsbG9Gc3JJRS9IU3VEdlE9PQ%3D%3D--1d66e41aef503bec8ea9d964160d776cee928583; request_time=Thu%2C+15+Apr+2021+10%3A00%3A53+-0000",
                    'origin':'https://www.kickstarter.com',
                    'referer':'https://www.kickstarter.com/projects/818583073/dies-irae-day-of-wrath-rated-r/description',
                    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36',
                    }
        urrl = '818583073/dies-irae-day-of-wrath-rated-r'
        payload = {"operationName":"Campaign","variables":{"slug":urrl},"query":"query Campaign($slug: String!) {\n  project(slug: $slug) {\n    id\n    isSharingProjectBudget\n    risks\n    story(assetWidth: 680)\n    currency\n    spreadsheet {\n      displayMode\n      public\n      url\n      data {\n        name\n        value\n        phase\n        rowNum\n        __typename\n      }\n      dataLastUpdatedAt\n      __typename\n    }\n    environmentalCommitments {\n      id\n      commitmentCategory\n      description\n      __typename\n    }\n    __typename\n  }\n}\n"}
        yield scrapy.FormRequest(url, formdata=payload, headers=headers, method='POST')


    def parse(self, response):
        print('successfully...')

这篇关于如何发送带有头和有效负载的Post请求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆