fetch

Python3爬虫(十二) 爬虫性能

陌路散爱 提交于 2020-03-08 17:24:56
Infi-chu: http://www.cnblogs.com/Infi-chu/ 一、简单的循环串行 一个一个循环,耗时是最长的,是所有的时间综合 import requests url_list = [ 'http://www.baidu.com', 'http://www.pythonsite.com', 'http://www.cnblogs.com/' ] for url in url_list: result = requests.get(url) print(result.text) 二、通过线程池 整体耗时是所有连接里耗时最久的那个,相对于循环来说快了不少 import requests from concurrent.futures import ThreadPoolExecutor def fetch_request(url): result = requests.get(url) print(result.text) url_list = [ 'http://www.baidu.com', 'http://www.bing.com', 'http://www.cnblogs.com/' ] pool = ThreadPoolExecutor(10) for url in url_list: #去线程池中获取一个线程,线程去执行fetch_request方法

【Teradata SQL】一个字段为空即取另外一个字段(连续取4个字段)-case when

自闭症网瘾萝莉.ら 提交于 2020-03-08 11:43:39
目标:如果col1为空则取col2的值,如果col2也为空则取col3的值,如果col3还为则取col4的值,如果四个字段均为空则取默认值 1.数据准备 create multiset table test1 ( col_type varchar(20), col1 varchar(10), col2 varchar(20), col3 varchar(30), col4 varchar(10) )no primary index; insert into test1 values ('fetch_col1','col1','col2','col3','clo4'); --字段均有值 insert into test1 values ('fetch_col1','col1','','col3','clo4');--col2无值 insert into test1 values ('fetch_col1','col1','col2','','clo4');--col3无值 insert into test1 values ('fetch_col1','col1','col2','col3','');--col4无值 insert into test1 values ('fetch_col2','','col2','col3','clo4');--col1无值 insert into

异步请求fetch之初体验

有些话、适合烂在心里 提交于 2020-03-07 14:26:01
更好阅读体验可移步我的博客: Blog 导读 传递信息到服务器,从服务器获取信息,是前端发展的重中之重,尤其是现在前后端分离的大前提下,前后端的数据交互是前端的必修科目了。从很久之前到现在,ajax都是每个前端入行者必须技能。当然为了便于开发者, 各种三方工具将ajax包装,然后给开发者使用,jquery、axios等等。这都不是今天的重点, 今天要说一个JavaScript原生的获取资源接口 Fetch API, 虽然各大浏览器支持率不高,但是这样的一个概念确实值得了解学习,并且现在我们可以通过polyfill来实现不同浏览器的兼容性问题 Fetch 先来看看各个浏览器对fetch的原生支持情况,可以看到支持性并不是很高,safari在10.1 之后才支持,ios更是10.3之后才支持,IE完全不支持。当然新技术的发展总会经历这个过程。不过,想提前尝尝鲜也是可以的我们可以使用 polyfill 声明:以下的所有代码测试都是基于 Chrome 实现 废话不多说, fetch 返回的是一个Promise,我们先来看一个基本的 fetch 结构 fetch(url, option).then( res => { //do something }).catch(err => { //do something }) fetch 的url 参数是必须的,option参数可选

vue-cli + es6 + axios项目踩坑

痞子三分冷 提交于 2020-03-07 13:39:04
最近新做了一个项目,因为完全是另起炉灶,可以抛开历史问题,重新尝试新的思路与解决方案。也兢兢业业的踩坑俩月,把项目初版跑上线了。这一版主要是保证功能流程没问题,下一版会对开发流程、性能、错误监控等问题进行优化。截至目前记录的一些问题先抽空整理下。 如题,项目采用 vue-cli + es6 + axios 这三个作为基础跑起来的,依然是移动端,考虑兼容性 安卓4.1 & ios7.1 ,刚开始引入了jq,后续发现完全没必要,就引入了axios的ajax库,然后其他采用原生 JavaScript 及 ES6 进行开发,也没遇到什么大的问题。 Axios github地址: https://github.com/axios/axios 在此之前一直用的JQ的 $.ajax ,引入axios后还是有一些不一样的坑要慢慢习惯。 请求参数方式不一致 axios中, get 请求和 post 请求携带参数的方式不一样,具体如下: axios.get(url, { params : { id : 123456 } }).then( res => {}) axios.post(url, { id : 123456 }).then( res => {}) 解决方案是基于axios简单封了一个 fetch.js ,以简化、统一调用 返回值更多信息 在jq的回调函数中,我们后端返回的数据直接放在参数中

前端 fetch 通信

守給你的承諾、 提交于 2020-03-06 00:04:55
随着前端异步的发展, XHR 这种耦合方式的书写不利于前端异步的 Promise 回调. 而且,写起来也是很复杂. fetch API 本来是在 SW(ServiceWorkers) 中提出的, 不过, 后面觉得好用, 就把他挂载到 window 对象下. 这样, 在前端的正常通信中, 我们也可以直接调用. 但, fetch 毕竟比较新, 看一下他的兼容性. 在 PC 端上, 就 FF, Opera 和 Chrome 比较 fashion. mobile 的话, 基本上是不能用的. 当然, 前端一直是个拥抱变化的职业, 官方已经有一个现成的 polyfill 可以使用. 这样的话, 就没必要过多担心. 每用到一个新的 feature, 我们首先得知道他能不能用. Modernizr 这个库做的挺好的. 这里, 我们简单的了解一下就 ok 了. let isFetch = window.fetch?true:false; fetch 基本格式 可以说, fetch 就是 ajax + Promise. 使用的方式和 jquery 提供的 $.ajax() 差不多. fetch('./api/some.json') .then( function(response) { if (response.status !== 200) { console.log(`返回的响应码$

爬虫性能

我怕爱的太早我们不能终老 提交于 2020-03-05 01:47:02
这里我们通过请求网页例子来一步步理解爬虫性能 当我们有一个列表存放了一些url需要我们获取相关数据,我们首先想到的是循环。 简单的循环串行 这一种方法相对来说是最慢的,因为一个一个循环,耗时是最长的,是所有的时间总和 代码如下: import requests url_list = [ 'http://www.baidu.com', 'http://www.pythonsite.com', 'http://www.cnblogs.com/' ] for url in url_list: result = requests.get(url) print(result.text) 通过线程池 通过线程池的方式访问,这样整体的耗时是所有连接里耗时最久的那个,相对循环来说快了很多 import requests from concurrent.futures import ThreadPoolExecutor def fetch_request(url): result = requests.get(url) print(result.text) url_list = [ 'http://www.baidu.com', 'http://www.bing.com', 'http://www.cnblogs.com/' ] pool = ThreadPoolExecutor(10) for

Varnish的vcl子程序

我是研究僧i 提交于 2020-03-04 18:38:08
Varnish的VCL子程序 以下内容参考: http://book.varnish-software.com/4.0/ VCL子进程,在其中定制Varnish的行为。VCL子例程可用于:添加自定义标头,更改Varnish错误消息的外观,在Varnish中添加HTTP重定向功能,清除内容以及定义缓存对象的哪些部分是唯一的。 注意:强烈建议尽可能让默认的内置子程序。内置子程序的设计考虑到安全性,这通常意味着它们可以合理的方式处理VCL代码中的任何缺陷。 vcl_recv 规范化客户端输入 选择一个后端Web服务器 重新编写Web应用程序的客户端数据 根据客户端输入决定缓存策略 访问控制列表(ACL) 安全屏障,例如针对SQL注入攻击 修复错误,例如index.htlm- >index.html vcl_recv是Varnish第一个VCL子进程,将客户端请求解析为其基本数据结构之后执行。 vcl_recv有四个主要用途: 修改客户端数据以减少缓存的多样性。 决定使用哪个Web服务器。 根据客户端数据决定缓存策略。 执行特定Web应用程序所需的重写规则。 在vcl_recv你可以执行以下终止操作: pass:它通过缓存查找,但它执行Varnish请求流的其余部分。 pass不会将来自后端的响应存储在缓存中。 pipe:此操作创建一个全双工管道,将客户端请求转发到后端,且不查看其内容

ajax和fetch的区别

天涯浪子 提交于 2020-03-03 06:26:39
一、 Ajax Ajax的本质是使用XMLHttpRequest对象来请求数据 只有当状态为200或者304时才会请求成功; 二、fetch fetch是基于promise实现的,也可以结合async/await。 fetch请求默认是不带cookie的,需要设置fetch(URL,{credentials:’include’})。Credentials有三种参数:same-origin,include 服务器返回400 500状态码时并不会reject,只有网络出错导致请求不能完成时,fetch才会被reject。 所有版本的 IE 均不支持原生 Fetch。 fetch是widow的一个方法; 来源: CSDN 作者: qb扛把子 链接: https://blog.csdn.net/qq_45927123/article/details/104605492

Vue的fetch的概述和使用

吃可爱长大的小学妹 提交于 2020-03-02 21:37:45
Fetch 基本概念 (前端小白,刚学习vue,写的不好或是不对,请各位大佬多多指正!感激不尽!) Fetch 是一个现代的概念, 等同于 XMLHttpRequest。它提供了许多与XMLHttpRequest相同的功能。 Fetch 的核心在于对 HTTP 接口的抽象,包括 Request , Response , Headers , Body ,以及用于初始化异步请求的 global fetch 。得益于 JavaScript 实现的这些抽象好的 HTTP 模块,其他接口能够很方便的使用这些功能。除此之外,Fetch 还利用到了请求的异步特性——它是基于 Promise 的。 Fetch 的用法 1 <div id=”box”> 2 //当点击按钮的时候,控制台可以打印出URL里面的数据 3 <button @click=”handleClick()”>click</button> 4 </div> 5 <script> 6 New Vue({ 7 el:”#box”, 8 data:{ 9 10 }, 11 methods:{ 12 handleClick(){ 13 //fetch方法 14 //Promise对象 15 //第一个.then拿到的是请求头的相关信息 16 //url里面传一个json地址 17 fetch(“url”).then(res=>{ 18

解决JPA使用root.fetch时报the owner of the fetched association was not present in the select list 问题

旧街凉风 提交于 2020-03-02 18:38:28
在使用JPA Specification 进行多条件查询时,使用root.fetch("xx")关联查询LAZY的属性时,会报如下错误: org.hibernate.QueryException: query specified join fetching, but the owner of the fetched association was not present in the select list 原因是由于查询时候除了执行select xxx from A 之外,还执行了select count(*) from A,而select count是不能调用fetch的,所以我们可以根据查询结果的类型来判断是否进行fetch,如果是long类型,则不执行fetch操作; 解决方法如下: JpaSpecificationExecutor.findAll(new Specification<T>(){ public Predicate toPredicate(Root<TabSgUserPackage> root, CriteriaQuery<> query, CriteriaBuilder builder) { if (!query.getResultType().equals(Long.class)) { root.fetch("xxx", JoinType.LEFT); }