python爬取笔趣阁小说
[TOC]
了解爬虫网络爬虫的分类
通用网络爬虫:抓取系统重要组成部分,抓取的是一整张页面。搜索引擎使用,遵守robopts协议。(robots协议是君子协议,只防君子,不防小人。)
聚焦网络爬虫:又称主题网络爬虫,根据预定义的主题来进行相关页面的爬取(抓取局部),与通用网络爬虫想比,它的爬取范围更为精准(自己写的爬虫程序)
增量式网络爬虫: 对已下载网页采取增量式更新和只爬行新产生的或者已经发生变化网页的爬虫。
深层网络爬虫: Web 页面按存在方式可以分为表层网页和深层网页,深层网页是指大多内容不能通过静态获取,需要用户提交关键词才能获取到隐藏在搜索表单后面的内容。
爬取数据的步骤:
发送请求:确定需要爬取的URL地址
获取响应内容:由请求模块向URL地址发出请求,并得到网站的响应
解析内容:利用解析模块从响应内容中提取所需数据
保存数据
爬虫入门URL1protocol :// hostname[:port] / path / [;parameters][?query]#fragment
URL由三部分组成,第一部分是协议,有http、https、ftp等,第二部分存 ...
栈和队列实现停车场
项目介绍设停车场是一个可停放n辆汽车的狭长死胡同,南边封口,汽车只能从北边进出(这样的停车场世间少有)。汽车在停车场内按车辆到达时间的先后顺序,最先到达的第一辆车停放在车场的最南端,依次向北排开。若车场内已停满n辆汽车,则后来的汽车只能在门外的候车场上等候,一旦有车开走,则排在候车场上的第一辆车即可开入。当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路(假定停车场内设有供车辆进出的便道,所有的司机也必须在车内随时待命),待该辆车开出大门外,其他车辆再按原次序进入车场。每辆停放在车场的车在它离开停车场时,要按停留的时间长短交纳费用。试为停车场编制按上述要求进行管理的模拟程序。
准备知识获取时间time函数
time_t now;
time(&now);// 等同于now = time(NULL)
printf(“now time is %d\n”, now);
返回值
返回1970-1-1, 00:00:00以来经过的秒数。(失败:-1)
原型
time_t time(time_t *calptr)
...
防火墙管理工具:iptables
iptables 是早起Linux系统中默认的防火墙管理服务。尽管新型的firewalld 投入使用很多年,大量的企业生产环境还是出于各种原因继续使用iptables 。
基本数据结构:树
什么是树树的实现树的实现主要有两种方式:列表之列表和节点之引用
文章使用节点之引用实现。
BinaryTree() 创建一个二叉树
getLeft()返回当前节点的左子节点所对应的树
getRight() 返回当前节点的右子节点所对应的树
setVal(val) 在当前节点中存储val
insertLeft(val)新建一颗二叉树,并将其作为当前节点的左子节点
insertRight(val) 新建一颗二叉树,并将其作为当前节点的右子节点
首先定义一个简单的类。
12345class BinaryTree: def __init__(self,val=None): self.val = val self.left = None self.right = None
节点之引用 的要点是,属性left和right 会指向BinaryTree类的其他实例。也就是说,向树中插入新的左子树,我们会创建另一个BinaryTree实例,并将根节点的self.left 指向新树。
下面是插入左子节点。
123456789# 插入 ...
Python标准库的常用模块
操作系统接口模块OS模块时间模块相关术语 UTC(Coordinated Universal Time,协调世界时),又称格林尼治天文时间、世界标准时间。与 UTC 对应的是各个时区的 local time(本地时间),东 N 区的时间比 UTC 早 N 个小时,因此,UTC + N 为东 N 区的本地时间,而西 N 区时间比 UTC 晚 N 个小时,因此,UTC N 为西 N 区的本地时间。中 国在东 8 区,因此比 UTC 早 8 小时,可以用 UTC+8 表示。
epoch time(纪元时间),表示一个特定的开始时间,不同平台上该时间点的值不太相同,在 Unix 系统中,epoch time 为 1970-01-01 00:00:00 UTC(1970 年 1 月 1 日 0 时 0 分 0 秒)。
timestamp(时间戳),也称 Unix 时间或 POSIX 时间,它表示从 epoch time(如 1970-01-01 00:00:00 UTC)开始到现在所经过的毫秒数,其值为 float 类型。但是,有些编程语言的相关方法返回的是秒 数(Pyt ...
基本数据结构:链表
链表是什么链表的实现必须明确指定链表的第一项的位置。当我们知道第一个位置,就可以知道第二个位置….外部的引用通常被称为链表的头。最后一个位置 要知道没有下一个项。
链表的节点(Node)链表实现的基本的构造块是节点。每一个节点至少保存两个信息。首先,节点必须要有列表项本身,也就是数据字段;此外,每个节点必须保存下一个节点的引用。
12345678910111213# 节点class Node: def __init__(self,initdata): self.data = initdata self.next = None def getData(self): return self.data def getNext(self): return self.next def setData(self,newdata): self.data = newdata def setNext(self,newnext): self.next = newnext
链表的构建123 ...
基础数据结构:队列
什么是队列 队列是有序集合,添加操作在”尾部”,移除操作在”头部”。新元素在尾部进入,然后一直向前移动到头部,直到称为下一个被移除的元素。
这种操作叫做FIFO(first-in first out)。
操作系统使用一些队列来控制计算机进程。调度机制往往基于一个队列算法,其目标是能尽可能的执行程序,同时服务尽可能多的用户。如打字的时候,有时候字符出现速度比敲键盘速度更慢,这是因为计算机正在做其他工作,敲键盘的操作被放在一个类似于队列的缓冲区,这样的话,便于对应的字符按正确的顺序显示。
队列抽象数据类型(操作)
Queue(): 创建一个空队列。它不需要参数,且返回一个空队列。
enqueue(item): 在队尾添加一个元素,需要参数,无返回值。
dequeue(): 在对头移除元素,不需要参数,有返回值(被删除的元素),并修改队列内容。
isEmpty(): 检查队列是否为空。无参数,返回布尔值。
size(): 返回队列中元素的数目,无参数,有返回值。
用Python实现队列123456789101112131415161718192021clas ...
基本数据结构:栈
根据《Python数据结构和算法分析》和其他网络资料整理而成。
什么是栈?栈是有序集合,添加操作和移除操作发生在同一端。
栈里面的元素离底端越近,代表在栈中的时间越长,因此栈的底端具有非常重要的意义。新添加的元素将被最先删除。这种排序原则是LIFO(last-in first out),后进先出
例如书本的堆叠
栈的抽象数据类型栈的抽象数据类型由下面的结构和操作定义。
Stack() 创建一个空栈。不需要参数,返回一个空栈。
push(item) 将一个元素添加到栈的顶端。需要一个参数item,且无返回值
pop() 将顶端的元素删除。不需要参数,但是有返回值。
peek() 返回栈顶端的元素。不要参数,也不修改栈的内容。
isEmpty()检查栈是否为空。不需要参数,返回一个布尔值。
size()返回栈中元素的数目。不需要参数,返回一个整数。
用python实现栈明确定义栈的抽象数据类型后,我们用Python来实现。抽象数据类型的实现被称为数据结构。
因为栈是元素的集合,所以可以使用Python提供的列表实现。
实现方式一
用列表的头部作为栈的底端,利用pop( ...
GCC+GDB+makefile工具的使用
在Linux环境下,我们的C语言程序一般由GCC工具编译,GDB调试,makefile用来解决gcc 一堆繁琐的步奏。
GCC编译器以c文件main.c,sub.c和add.c和头文件my_fun.h为例,代码为
12345678910111213141516 //main.c 1 #include<stdio.h> 2 #include<add.h> 3 #include<sub.h> 4 int main() 5 { 6 int num1,num2; //定义两个数字 7 int sum,diff; //和 差 8 printf("你好,请输入两个数:\n"); 9 scanf("%d%d",&num1,&num2);10 sum = add(num1,num2);11 diff = sub(num1,num2);12 printf("%d+%d=%d\n",num1,num2,sum); 13 print ...
你真的熟练掌握vim编辑器吗?
vim编辑器是一个功能强大的多模式编辑器,是Linux/UNIX 上最常用的文本编辑器, 它的作用是建立、编辑、显示文本文件。Vim 没有菜单,只有命令。
本文根据@每天都要敲代码和[Linux就该这样学》](《Linux就该这么学》 - 必读的Linux系统与红帽RHCE认证免费自学书籍 (linuxprobe.com))整理。
三种工作模式
命令模式
输入模式
末行模式
互相的切换
命令模式
插入命令
a :在光标所在字符后插入(add)
A :在光标所在行尾插入
i :在光标所在字符前插入
I :在光标所在行行首插入
o :在光标下插入新行
O :在光标上插入新行
删除命令
x :删除光标所在字符,每次删一个字符
5x :删除光标后5个字符
dd : 删除当前行
5dd: 删除剪切从光标开始的5行
dG :删除光标所在行到文件的末尾
:1,5d :删除第1到第5行
u :撤销
复制命令
5yy :复制从光标开始的5行
p :粘贴
末行模式
保存和退出命令
:w :保存
:q :退出
:q! :强制退出
:wq! :强制并退出 ...