next

scrapy框架爬取妹子图片

孤人 提交于 2021-02-15 12:09:52
首先,建立一个项目#可在github账户下载完整代码:https://github.com/connordb/scrapy-jiandan2 scrapy startproject jiandan2 打开pycharm,把建立的此项目的文件打开,在中断新建一个爬虫文件 scrapy genspide jiandan jandan.net/ooxx 在Items中配置我们需要的信息 import scrapy class Jiandan2Item(scrapy.Item): # define the fields for your item here like: img_url = scrapy.Field() # 图片的链接 img_name = scrapy.Field() 在jian_pan 文件开始我们对网页的解析 import base64 from jiandan2 import item class JiandanSpider(scrapy.Spider): name = 'jiandan' allowed_domains = ['jandan.net'] start_urls = ['http://jandan.net/ooxx'] def parse(self, response): img = response.xpath('//div[@id="comments

层叠轮播图的简易制作

天大地大妈咪最大 提交于 2021-02-15 09:49:29
  之前做过很多不同样式的轮播图,不是通过改变left值使图片左右移动的,就是改变透明度实现轮播图的,偶然在网易云上看到了层叠轮播图,它转换图片的方式和其他轮播图有些不同,我从来没做过这种轮播图,思考了很久该用什么方法做,终于做出来了一个简陋的成品。由于轮播图的图片是网上找来的,所以我做了模糊处理,用清晰的图片效果更好,这里是我的一个演示(没有录制鼠标): 思路和方法 我所能想出的最简单的方法就是先给轮播图中的几张图片特定的class值,再通过改变图片class的值来改变他们的位置 话不多说,上代码: html <div class="img"> <div class="whole"> <div class="roll-img"> <span class="last"><</span> <ul id="ul"> <li class="left"><img src="img/1.jpg" alt=""><div></div></li> <li class="center"><img src="img/2.jpg" alt=""><div></div></li> <li class="right"><img src="img/3.jpg" alt=""><div></div></li> <li class="after1"><img src="img/4.jpg" alt="">

Python3 迭代器与生成器

风格不统一 提交于 2021-02-15 04:33:31
Python3 迭代器与生成器 迭代器( iterator ): 迭代器是一个对象。 是一个可以记住遍历的位置的对象 迭代器对象 从集合的第一个元素开始访问,直到所有的元素被访问完结束。 迭代器只能往前不会后退。 创建迭代器:字符串,列表或元组对象都可用于创建迭代器 迭代器有两个基本的方法: iter() 和 next() StopIteration异常: 用于标识迭代的完成 ,防止出现无限循环的情况,在 __next__() 方法中我们可以设置在完成指定循环次数后触发 StopIteration 异常来结束迭代。 # !/usr/bin/python3 import sys # 引入 sys 模块 list =[1,2,3,4 ] it = iter (list) # 创建迭代器对象 while True: # 使用while 语句循环输出it try : print ( next (it)) # 输出迭代器的一个元素 except StopIteration: # 当遇到出现“ StopIteration ” 异常,执行“退出”      sys.exit() 1 2 3 4 tip:我们创建一个generator后,基本上永远不会调用next(),而是通过for循环来迭代,并且不需要关心StopIteration的错误 #生成器 generator_ex = (x*x for

Excel VBA入门(8): 代码调试/错误处理/代码优化

爱⌒轻易说出口 提交于 2021-02-15 04:20:15
VBE有丰富的调试工具, 比如立即窗口, 本地窗口, 监视窗口, 断点调试... 第一个博文中已经讲过调试的基本操作: 设置断点, F5运行, F8逐条运行 断点就是程序中暂停停止运行的位置, 设置断点之后, 当运行到断点行所在的语句程序就进入中断模式, 此时在本地窗口和立即窗口中 可以查看变量以及对象的属性值. 1. debug 介绍: 调试工具的基石 debug.print x 在不中断程序的情况下输出x 的值 debug.assert 与if 类似, 用与判断一个条件是否成立, 但是if 语句不会暂定程序的执行, 如果assert方法的参数不成立, 程序会暂停进入中断模式. Function assert_test(x As Integer , y As Integer ) As Double Debug.Assert y <> 0 ' y=0则进入中断模式 If y <> 0 Then assert_test = x / y End If End Function Sub test() MsgBox assert_test( 10 , 2 ) ' 正常运行 MsgBox assert_test( 10 , 0 ) ' 在Debug.Assert y <> 0 程序会中断 End Sub 立即窗口的使用 : 立即窗口的输出如果超过200行, 就只显示最后200行的内容

RocketMQ中Broker的刷盘源码分析

与世无争的帅哥 提交于 2021-02-15 04:03:51
上一篇博客的最后简单提了下CommitLog的刷盘 【RocketMQ中Broker的消息存储源码分析】 (这篇博客和上一篇有很大的联系) Broker的CommitLog刷盘会启动一个线程,不停地将缓冲区的内容写入磁盘(CommitLog文件)中,主要分为异步刷盘和同步刷盘 异步刷盘又可以分为两种方式: ①缓存到mappedByteBuffer -> 写入磁盘(包括同步刷盘) ②缓存到writeBuffer -> 缓存到fileChannel -> 写入磁盘 (前面说过的开启内存字节缓冲区情况下) CommitLog的两种刷盘模式: 1 public enum FlushDiskType { 2 SYNC_FLUSH, 3 ASYNC_FLUSH 4 } 同步和异步,同步刷盘由GroupCommitService实现,异步刷盘由FlushRealTimeService实现,默认采用异步刷盘 在采用异步刷盘的模式下,若是开启内存字节缓冲区,那么会在FlushRealTimeService的基础上开启CommitRealTimeService 同步刷盘: 启动GroupCommitService线程: 1 public void run() { 2 CommitLog.log.info( this .getServiceName() + " service started" ); 3

蒲公英 · Taro 的诞生与演进

馋奶兔 提交于 2021-02-15 02:45:06
https://juejin.im/post/5e547d0b6fb9a07ce31ee6d7 在凹凸有一片蒲公英花田,每当清风拂过,一缕缕白色的蒲公英种子在空中轻盈地飞舞,自由自在,随风飘去。我们总是会抬头仰望,憧憬着它们会生根发芽,开得绚丽烂漫。 Taro Next 终于发布了预览版,同时支持 React / Vue / Nerv 三种框架!!! 从 Taro 团队 第一次在社区内提到 Taro Next 版本的构架到现在已经数月有余, Taro Next 也在社区内饱受期待,有很多小伙伴可能已经在 next 分支中体验过全新的版本,也有很多在一直期待 Taro Next 的版本发布。 Taro Next 在这几个月内,从 next 分支、实验版本,到现在预览版本的发布,逐步走向稳定和完善。本次发布小助手也在第一时间就去更新体验了哦,这就是我期待中的 Taro 。 当然,我们也从 Taro 社区 中,收集到了一些反馈,比方说很多童鞋不知道 Nerv 是什么 (っ﹏-) .。o 作为一位凹凸曼,小助手今天就来给大家科普一下,到底什么是 Nerv 咯。 其实也很简单,一句话概括就是“一款轻量级、高性能类 React 前端框架”,大家有兴趣可以去 Nerv 官网 了解更多,小助手也给大家带来了一篇文章详解,嘻嘻~(~o ̄▽ ̄)~o Nerv - 京东高性能前端框架 Nerv

蒲公英 · Taro 的诞生与演进

被刻印的时光 ゝ 提交于 2021-02-15 02:44:51
https://juejin.im/post/5e547d0b6fb9a07ce31ee6d7 在凹凸有一片蒲公英花田,每当清风拂过,一缕缕白色的蒲公英种子在空中轻盈地飞舞,自由自在,随风飘去。我们总是会抬头仰望,憧憬着它们会生根发芽,开得绚丽烂漫。 Taro Next 终于发布了预览版,同时支持 React / Vue / Nerv 三种框架!!! 从 Taro 团队 第一次在社区内提到 Taro Next 版本的构架到现在已经数月有余, Taro Next 也在社区内饱受期待,有很多小伙伴可能已经在 next 分支中体验过全新的版本,也有很多在一直期待 Taro Next 的版本发布。 Taro Next 在这几个月内,从 next 分支、实验版本,到现在预览版本的发布,逐步走向稳定和完善。本次发布小助手也在第一时间就去更新体验了哦,这就是我期待中的 Taro 。 当然,我们也从 Taro 社区 中,收集到了一些反馈,比方说很多童鞋不知道 Nerv 是什么 (っ﹏-) .。o 作为一位凹凸曼,小助手今天就来给大家科普一下,到底什么是 Nerv 咯。 其实也很简单,一句话概括就是“一款轻量级、高性能类 React 前端框架”,大家有兴趣可以去 Nerv 官网 了解更多,小助手也给大家带来了一篇文章详解,嘻嘻~(~o ̄▽ ̄)~o Nerv - 京东高性能前端框架 Nerv

C++知识点

不羁岁月 提交于 2021-02-15 02:39:43
路之遥_其漫漫 C++基础知识点 1 " 天命不足畏,祖宗不足法,人言不足恤 " 2 3 第一天 C++基础班 ************************************============================================= 4 1 .封装,继承,多态。 5 2 .作用域运算符(::) 6 :: 前面不写东西,表示调用全局变量 7 3.名字控制(命名空间( namespace )): 8 1 )命名空间只能在全局范围内定义 9 2 )命名空间可以嵌套命名空间 10 3 )命名空间是开放的,可以随时向命名空间添加东西(变量,函数,类等)。 11 4 ) 声明和实现可分离 12 5 ) 匿名命名空间,默认此空间中的函数,变量等只在当前文件中有效,相当于给每个变量、函数前加入static. 13 namespace TestA 14 { 15 int a; // 这是在命名空间中未初始化的定义。 当在命名空间进行定义时,而且此命名空间放在头文件,当在其他文件进行 16 // 调用时,会产生重复定义的问题,编译不过。 17 int b = 9; // 这是在命名空间中初始化的定义 18 extern int c; // 这是命名空间中的声明。 19 } 20 21 4 .条件编译 22 #pragma once (第一种) 23

使用 Node.js 开发一个客户端小工具

試著忘記壹切 提交于 2021-02-15 00:01:22
最近山月开发了一个从任意 URL 解析内容并生成 markdown 的小客户端工具: markdown-read。用以我个人公众号的内容获取及一些优质内容的整理收藏,欢迎 Star、下载及使用。 $ markdown https://juejin.cn/post/6924258563862822919 | head -10 > 本文作者:Wind、Skyler、ZRJ、ZJ ## 前言 Webpack5 在 2020 年 10 月 10 日正式发布,并且在过去的几个月中快速演进和迭代,截止 1 月 28 日,Webpack5 已经更新了 18 个 minor 版本,带来了许多十分吸引人的新特性。据[官网介绍](https://webpack.js.org/blog/2020-10-10-webpack-5-release/ #general-direction "官网介绍"),Webpack5 整体的方向性变化有以下几点: ![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/77ee2267bfa34ef5bf7bb29553a5035c~tplv-k3u1fbpfcp-zoom-1.image) + 通过持久化硬盘缓存能力来提升构建性能 + 通过更好的算法来改进长期缓存(降低产物资源的缓存失效率) 想到用 Node

Linux C 数据结构->双向链表(阴阳在六,何以言九~)

限于喜欢 提交于 2021-02-14 23:28:09
0. 弄完了单链表,在看双向链表。怎么整?多写,多想,想不通画出来在想,再写,再模仿~ 1. 没啥说的,敲代码~ 说点啥呢,注意自己的代码风格哦,要符合"潮流",不要独树一帜 1.1 DList.h #ifndef _DLIST_H_ #define _DLIST_H_ typedef int data_t; /* 节点指针 */ typedef struct node_t * PNode; /* 表示返回的是地址 */ typedef PNode Position; /* 定义节点类型 */ typedef struct node_t { data_t data; // 数据域 PNode prev; // 前驱指针 PNode next; // 后继指针 }node_t; /* 定义链表类型 */ typedef struct DList { PNode head; // 指向头节点 PNode tail; // 指向尾节点 int size; }DList; /* 分配值为i的节点 并返回节点地址 */ Position MakeNode(data_t i); /* 释放p所指的节点 */ void FreeNode(PNode p); /* 构建一个空的双向链表 */ DList * InitList(); /* 销毁一个双向链表 */ void DestroyList