response

Scrapy组件之item

◇◆丶佛笑我妖孽 提交于 2020-01-22 20:53:54
Scrapy是一个流行的网络爬虫框架,从现在起将陆续记录Python3.6下Scrapy整个学习过程,方便后续补充和学习。 Python网络爬虫之scrapy(一) 已经介绍scrapy安装、项目创建和测试基本命令操作,本文将对item设置、提取和使用进行详细说明 item设置   item是保存爬取到的数据的容器,其使用方式和字典类似,并且提供了额外保护机制来避免拼写错误导致的未定义字段错误,定义类型为scrapy.Field的类属性来定义一个item,可以根据自己的需要在items.py文件中编辑相应的item # -*- coding: utf-8 -*- # Define here the models for your scraped items # # See documentation in: # https://doc.scrapy.org/en/latest/topics/items.html #装载我们抓取数据的容器 import scrapy class ExampleItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() name = scrapy.Field() #属性作为Field对象 population = scrapy.Field

浏览器的F5和Ctrl+F5

守給你的承諾、 提交于 2020-01-22 12:31:25
在浏览器里中,按F5键和按F5同时按住Ctrl键(简称Ctrl+F5),效果是不同,到底两者有什么区别呢? 假如我第一次访问过http://localhost/home,这个网页是个动态网页,每次访问都会去访问Server,但是它包含一个一个静态资源http://localhost/content/bootstrap.css,浏览器在显示这个网页之前需要发HTTP请求获取这个bootstrap.css文件,返回的HTTP response包含这样的Headers: 下次我再通过bookmark或者通过在URI输入栏直接敲字的方法访问http://localhost/home的时候,浏览器一看本地有个bootstrap.css,而且它还没过期呢,就不会发HTTP request给server,而是直接把本地cache中的bootstrap.css显示了。 F5的作用和直接在URI输入栏中输入然后回车是不一样的,F5会让浏览器无论如何都发一个HTTP Request给Server,即使先前的Response中有Expires Header。所以,当我在当前http://localhost/home网页中按F5的时候,浏览器会发送一个HTTP Request给Server,但是包含这样的Headers: If-Modified-Since: Wed, 20 Jan 2016 10:24

浏览器: F5 和 Ctrl+F5的区别

﹥>﹥吖頭↗ 提交于 2020-01-22 12:31:04
刚修改了所有的首页,全部加上了 帮助firefox来创造世界奇迹! 不过现在有个问题,好几个首页必须按下ctrl+f5才能看到最新的效果。网上找了一片说f5和ctrl+f5区别的文章,写的很全面。 -- 引: http://morganchengmo.spaces.live.com/blog/cns!9950CE918939932E!2144.entry Browser: F5 vs Ctrl+F5 在浏览器里中,按F5键或者点击Toobar上的Refresh/Reload图标(简称F5),和做F5同时按住Ctrl键(简称Ctrl+F5),效果是明显不一样的,通常Ctrl+F5明显要让网页Refresh慢一些,到底两者有什么区别呢? 在上一篇技术文章中,说到了Expires、Last-Modified/If-Modified-Since和ETag/If-None-Match这些HTTP Headers,F5/Ctrl+F5和这些有莫大关系。 假如我第一次访问过http://www.example.com,这个网页是个动态网页,每次访问都会去访问Server,但是它包含一个一个静态资源http://www.example.com/logo.gif,浏览器在显示这个网页之前需要发HTTP请求获取这个logo.gif文件,返回的HTTP response包含这样的Headers:

SpringSecurity 默认表单登录页展示流程源码

瘦欲@ 提交于 2020-01-22 10:28:28
SpringSecurity 默认表单登录页展示流程源码 本篇主要讲解 SpringSecurity提供的默认表单登录页 它是如何展示的的流程, 涉及 1.FilterSecurityInterceptor, 2.ExceptionTranslationFilter , 3.DefaultLoginPageGeneratingFilter 过滤器, 并且简单介绍了 AccessDecisionManager 投票机制  1.准备工作(体验SpringSecurity默认表单认证)   1.1 创建SpringSecurity项目   先通过IDEA 创建一个SpringBoot项目 并且依赖SpringSecurity,Web依赖   此时pom.xml会自动添加 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>   1.2 提供一个接口 @RestController public class HelloController { @RequestMapping("/hello") public String hello() { return "Hello SpringSecurity

django_python_生成验证时报错TypeError: string argument expected, got 'bytes'

耗尽温柔 提交于 2020-01-22 08:43:02
问题描述: 在django的views.py视图中定义视图函数生成二维码并返回给网页,生成验证码过程中发生错误,如下: TypeError: string argument expected, got 'bytes' Traceback (most recent call last): File "G:\anaconda\lib\site-packages\django\core\handlers\exception.py", line 34, in inner response = get_response(request) File "G:\anaconda\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response response = self.process_exception_by_middleware(e, request) File "G:\anaconda\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "F:

Vue axios

ε祈祈猫儿з 提交于 2020-01-22 06:03:13
什么是Axios Axios是基于Promise的Http客户端,可以在浏览器和node.js中使用。 为什么使用Axios Axios非常适合前后端数据交互,另一种请求后端数据的方式是vue-resource,vue-resource已经不再更新了,且只支持浏览器端使用,而Axios同时支持浏览器和Node端使用。 Vue开发者推荐使用更好的第三方工具,这就是Axios,详细的文件,请参考Evan You的 这篇文章 。 安装 Axios的安装支持多种方式 npm安装 1 npm install axios cdn 1 <script src="https://cdn.bootcss.com/axios/0.18.0/axios.min.js"></script> 使用方式介绍 接下来,我们使用Django,搭建一个后台程序,并使用Vue Cli搭建一个前端程序,使用Axios进行前后端数据交互。 使用Vue Cli创建一个前端程序 1 vue init webpack luffy_fontend 使用Django创建一个后端程序luffy_backend 1 django-admin startproject luffy_backend 创建一个courses应用 12 cd luffy_backendpython manage.py startapp courses

ajax请求遇到response.sendRedirect() 302无法重定向? ? ?

旧城冷巷雨未停 提交于 2020-01-22 01:55:23
1.问题如下: 前端发起ajax请求 -> 后端拦截器进行校验(preHandle) -> 发现用户失效 -> 重定向到登录页( response.sendRedirect() ) 通过F12, 我们可以看到方法已经执行, 但是页面没有跳转过去? ? ? 2.问题分析: ajax的机制, 就是通过 XMLHttpRequest对象 向服务器发送请求,从服务器获取数据! 除此之外它不能做以外的其它动作了。 ajax功能就是这么设定的, ajax也是这么做的, 它的作用也仅仅局限于此, 所以浏览器端是不会发起重定向的, 不会重新加载页面的。 3.解决办法: 只能通过服务器端告诉 ajax, 请求失效了, 让它 location.href = “” , 跳转到登录页面. 1.过滤器里再加个ajax请求判断, /** * ajax请求重定向问题的处理方法 */ public void ajaxRedirect ( HttpServletRequest request , HttpServletResponse response ) throws IOException { if ( "XMLHttpRequest" . equals ( request . getHeader ( "X-Requested-With" ) ) ) { response . setHeader (

Bing API 2的体验

邮差的信 提交于 2020-01-22 01:09:34
所谓Bing API,就是微软的搜索服务所公开的一套API,其目的就是让任何应用程序可以调用Bing的服务实现自定义的搜索体验。 基本的三个步骤: 申请一个App Id http://cn.bing.com/developers/createapp.aspx 下载SDK http://www.microsoft.com/downloads/details.aspx?FamilyId=0F513086-078B-47A8-A889-842DC93A69AB&displaylang=en 如何编程访问bing的搜索服务 http://msdn.microsoft.com/en-us/library/dd251049.aspx 我做的一个例子: 我们可以采用SOAP的方式,即调用Web Service的方式,首先按照下面这样的方式添加引用 Using SOAP (Bing, Version 2) The Bing SOAP interface is most efficiently accessed by referencing the Web Service Description Language (WSDL) document from a Microsoft Visual Studio project. The WSDL defines the ports and

Bing API初体验 -- z

早过忘川 提交于 2020-01-22 00:41:26
Bing正式发布没几天,除了功能和搜索结果外,作为开发者来说,我们关心的还有Bing API啥时候能出。周末浏览MSDN网站时,发现Bing Service已经上线了,链接是: http://msdn.microsoft.com/en-us/library/dd900818.aspx Bing提供的API很丰富,除了搜索外,还增加了广告Ad、图片、新闻、Phonebook、拼写和视频的搜索。而访问协议有三种:JSON, XML和SOAP。JSON协议用于AJAX应用,XML用于Silverlight应用,SOAP用于传统的.NET等强类型程序。可见,微软在推出API方面还是很有效率的。 使用Bing API的第一步,是去Bing Developer Center上申请一个AppId,每个应用应该使用一个单独的AppId。Bing Developer Center的网址是: http://bing.com/developers 。在页面里先用Live ID登录,然后选择Get a new App ID,填写一些基本信息,然后你就会得到一串很长的AppId。需要注意的是,Bing还有一个网址是 http://www.bing.com/developer/ ,估计是为1.1版本准备的,现在还不能申请AppId。大家一定要分清楚。 接下来,我们在Visual Studio

allure的其他参数

烈酒焚心 提交于 2020-01-21 23:28:03
import pytestimport requestsimport allure l = [ { "url": "https://www.v2ex.com/api/site/info.json", "title":"v2ex的title", "desc":"v2ex的描述信息", "expect": {"title": "V2EX","slogan1111":"way to explore","domain":"www.v2ex.com"} }, { "url": "https://cnodejs.org/api/vl/topics", "title":"cnodejs的title", "desc":"cnodejs的描述", "expect": {"success": True}},]@pytest.mark.parametrize("d", l)def test_case(d): #allure的动态参数 dynamic allure.dynamic.title(d["title"]) allure.dynamic.description(d["desc"]) response = requests.get(url=d["url"]).json() for k in d["expect"]: print(333333,k) if d["expect"][k] !=