python输出200-500之间的所有奇数_Scrapy 1.8.0返回错误500,但Python代码返回成功200…

我可以通过Python请求库轻松下载此页面:

headers = {

‘x-client’: ‘EXMOOR’,

‘x-product’: ‘CITIZENPORTAL’,

‘x-service’: ‘PA’,

url=’https://planningapi.agileapplications.co.uk/api/application/search?reference=GDO+19%2F12′

resp = requests.get(url, headers=headers)

或者我可以通过CURL轻松下载页面:

curl ‘https://planningapi.agileapplications.co.uk/api/application/search?reference=GDO+19%2F12’ -H ‘x-product: CITIZENPORTAL’ -H ‘x-service: PA’ -H ‘x-client: EXMOOR’

它们都返回状态200结果:

{“total”:1,”results”:[{“id”:18468,”reference”:”GDO 19/12″,”proposal”:”Prior notification for excavations to bury tanks and trenches to lay water pipes”,”location”:”Land North West of North and South Ley, Exford, Minehead, Somerset.”,”username”:””,”applicantSurname”:”Mr & Mrs M Burnett”,”agentName”:”JCH Planning Limited”,”decisionText”:null,”registrationDate”:”2019-10-04″,”decisionDate”:”2019-10-30″,”finalGrantDate”:null,”appealLodgedDate”:null,”appealDecisionDate”:null,”areaId”:[],”wardId”:[],”parishId”:[3],”responded”:null,”lastLetterDate”:null,”targetResponseDate”:null}]}

但是Scrapy返回状态500错误:

formdata = {‘reference’: ‘GDO 19/12’, }

headers = {

‘x-client’: ‘EXMOOR’,

‘x-product’: ‘CITIZENPORTAL’,

‘x-service’: ‘PA’,

fr = scrapy.FormRequest(

url=’https://planningapi.agileapplications.co.uk/api/application/search’,

method=’GET’,

meta=response.meta,

headers=headers,

formdata=formdata,

dont_filter=True,

callback=self.ref_result_2,

yield fr

也许是因为Scrapy将标头键大写(我尝试过取消大写,但随后Twisted也这样做了-再次将它们大写),也许是出于其他原因。

如何调整Scrapy 1.8.0代码以成功获得与Python请求相同的结果?

解决方案

确实是由Scrapy将标头字段大写的事实造成的。如果尝试使用大写字母,则在cURL命令中,将得到与Scrapy相同的错误(可以handle_httpstatus_list在Spider类的Scrapy设置中对其进行测试,并response.text在parse方法中进行打印)。就像您已经说过的,Twisted也是一样,因此覆盖scrapy.http.Headers不是解决方案。

但是,您可以按照以下问题做一个技巧,使Twisted不大写特定的标头:

– coding: utf-8 –

from pprint import pprint

import scrapy

from twisted.web.http_headers import Headers as TwistedHeaders

TwistedHeaders._caseMappings.update({

b’x-client’: b’x-client’,

b’x-product’: b’x-product’,

b’x-service’: b’x-service’,

class Foo(scrapy.Spider):

name = ‘foo’

handle_httpstatus_list = [500]

def start_requests(self):

formdata = {‘reference’: ‘GDO 19/12’}

headers = {

‘x-client’: ‘EXMOOR’,

‘x-product’: ‘CITIZENPORTAL’,

‘x-service’: ‘PA’

yield scrapy.FormRequest(

‘https://planningapi.agileapplications.co.uk/api/application/search’,

method=’GET’, headers=headers, formdata=formdata, callback=self.parse)

def parse(self, response):

pprint(response.text)

现在您将获得结果。另一方面,根据RFC 7230第3.2节,标头字段应不区分大小写。

Original: https://blog.csdn.net/weixin_28876287/article/details/113679222
Author: Rainfall若
Title: python输出200-500之间的所有奇数_Scrapy 1.8.0返回错误500,但Python代码返回成功200…

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/791017/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 轻量级消息队列 Django-Q 轻度体验

    最近做的这个项目(基于Django),需要做个功能,实现定时采集车辆定位。 这让我想起来几年前那个OneCat项目,当时我用的是Celery这个很重的组件 Celery实在是太重了…

    Python 2023年10月23日
    040
  • 基于随机森林算法进行硬盘故障预测

    摘要:本案例将带大家使用一份开源的S.M.A.R.T.数据集和机器学习中的随机森林算法,来训练一个硬盘故障预测模型,并测试效果。 实验目标 案例内容介绍 随着互联网、云计算的发展,…

    Python 2023年10月24日
    035
  • Matplotlib不显示中文解决办法

    在学习matplotlib画图过程中,难免会碰到x轴、y轴刻度、图标题、图例显示中文的情况。但是发现matplotlib默认不会显示中文,需要经过字体设置才可以。笔者在解决问题的过…

    Python 2023年8月30日
    039
  • BUUCTF-[HCTF 2018]admin1

    题目 分析 打开环境,页面啥也没有,日常查看源代码 提示说你不是admin,所以这题可能是我们为admin才可以得到flag 在login页面找到登录框 刚开始以为是sql注入,直…

    Python 2023年8月10日
    083
  • jupyter和pyzmq之间的一些个奇葩坑

    文章目录 导读 发现问题 GitHub版本回溯查询 你以为这就结束了? 又好气又好笑的bug 你以为又双叒叕结束了? 导读 估计不少人和我遇到了同样的问题, jupyter-cli…

    Python 2023年8月9日
    048
  • java 类似dataframe_Pandas DataFrame 使用总结

    Pandas 是一个非常好用的库,总结一下 Pandas DataFrame 常见用法,在使用的时候可以快速找到。 Pandas DataFrames 是具有带标签的行和列的二维数…

    Python 2023年8月6日
    040
  • Pygame中get_rect( )方法——一首歌的时间学会

    首先,我们需要一张图片,做我们的对象(不要想歪),是对象!对,对象! 嗯~这个对象非常好! 然后,我们在学习rect对象时,首先了解rect对象是一个实际绘制的矩形区域。 也就是我…

    Python 2023年9月17日
    030
  • python贪吃蛇手机版代码_200行python代码实现贪吃蛇游戏

    本文实例为大家分享了python实现贪吃蛇游戏的具体代码,供大家参考,具体内容如下 这次我们来写一个贪吃蛇游戏 下面贴出具体代码 import pygame import time…

    Python 2023年9月22日
    064
  • Flask 报错:WARNING: This is a development server. Do not use it in a production deployment.

    因为最近尝试部署flask 的项目到服务器,所以遇到特别多的琐碎事。在win 下就没报错,一放到线上就各种报错!估计我是写的代码或逻辑上还不够规范。继续加油! 因为部署到服务器,在…

    Python 2023年8月15日
    043
  • 为什么浏览器的默认请求模式都是GET?

    因为get方式只是用于查询,不需要和数据库进行交互,同时一个get请求发送后,会在浏览器中留下缓存,下次访问同一url的话,get请求为了节省时间和空间就会直接走缓存,更加方便快捷…

    Python 2023年5月23日
    090
  • [pytest] requests模块

    视频教程传送门 12、Pytest接口自动化之request模块返回的response对象详解_哔哩哔哩_bilibili requests是用来发送http请求以及接收http响…

    Python 2023年9月11日
    058
  • scrapy 下载网页数据

    通过框架将数据存储到数据库或者到本地 安装库,Mac 中brew 安装 python3.9 pip3 install scrapy 创建项目 scrapy startproject…

    Python 2023年10月1日
    057
  • 《黑客帝国》中的代码雨让人身临其境 利用Python轻松实现

    ; 前言 《黑客帝国》的一段代码雨片段让外行人感觉非常震撼,但其实利用咱们的Python来做出这个效果真的很简单! 今天就带大家把这个代码雨放在自己的显示器上面,亲身体验一把黑客的…

    Python 2023年9月19日
    053
  • Python数据分析–Matplotlib(1)

    绘制图象 plt.plot()plot可以绘制线性图表 from matplotlib import pyplot as plt import numpy as np x=np.a…

    Python 2023年9月4日
    032
  • python和matlab连接

    1,实现matlab 和 python混编必须版本对应 matlab 查看版本 命令行窗口输入 matlab;gutter:true; pyversion</p> &l…

    Python 2023年5月24日
    0111
  • python数据分析————数据聚合与分组运算

    分组:使用特定的条件将原数据划分为多个组 *聚合:对每个分组中的数据执行某些操作,最后将计算的结果进行整合 整个过程就是拆分(split)—应用(apply)—合并(combine…

    Python 2023年8月22日
    064
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球