爬虫是什么 1234567891011121314151617181920212223242526#1、什么是互联网? 互联网是由网络设备(网线,路由器,交换机,防火墙等等)和一台台计算机连接而成,像一张网一样。#2、互联网建立的目的? 互联网的核心价值在于数据的共享/传递:数据是存放于一台台计算机上的,而将计算机互联到一起的目的就是为了能够方便彼此之间的数据共享/传递,否则你只能拿U盘去别人的计算机上拷贝数据了。#3、什么是上网?爬虫要做的是什么? 我们所谓的上网便是由用户端计算机发送请求给目标计算机,将目标计算机的数据下载到本地的过程。 #3.1 只不过,用户获取网络数据的方式是: 浏览器提交请求->下载网页代码->解析/渲染成页面。 #3.2 而爬虫程序要做的就是: 模拟浏览器发送请求->下载网页代码->只提取有用的数据->存放于数据库或文件中 #3.1与3.2的区别在于: 我们的爬虫程序只提取网页代码中对我们有用的数据#4、总结爬虫 #4.1 爬虫的比喻: 如果我 ...
爬虫基本原理 爬虫是什么 爬虫的基本流程 请求与响应 Request Response 总结 请求库之requests,selenium requests模块 selenium模块 解析库之re、beautifulsoup、pyquery 介绍 基本使用 遍历文档树 搜索文档树 修改文档树 总结 存储库之mongodb,redis,mysql 爬虫高性能相关 背景知识 同步、异步、回调机制 高性能 Scrapy框架 介绍 安装 命令行工具 项目结构以及爬虫应用简介 Spiders Selectors Items Item Pipeline Dowloader Middeware Spider Middleware 自定义扩展 settings.py 爬取亚马逊商品信息 分布式爬虫 ...
12345[root@37wan ~]# uptime 12:53:01 up 227 days, 16:33, 1 user, load average: 1.43, 2.16, 2.20 # and [root@37wan ~]# cat /proc/loadavg 1.72 1.89 2.02 1/535 20618 load average 后面三个值代表系统在1分钟、5分钟和15分钟的负载情况,都知道数字越高表示系统负载越大,第一直觉就是这个系统不行了。那么到底多高的负载才算高负载? 我们又如何去判断系统是否已经高负载呢? 什么是load average? load average的就是一定时间内计算机有多少个active_tasks,也就是说是计算机的任务执行队列的长度,cpu计算的队列。 load average多少是正常? 既然load是cpu计算的队列,那就应该和cpu个处理方式和cpu的个数有关系。所以我个人认为应该按系统识别的cpu个数来确定load的临界值,系统识别为8个cpu,那么load为8就是临界点,高于8就属于over load了。 什么叫系统识别 ...
Linux
未读uptime linux uptime命令主要用于获取主机运行时间和查询linux系统负载等信息。 **eg: ** 12:55:56 up 227 days, 16:25, 1 user, load average: 1.25, 1.62, 2.04 显示内容说明: 12:55:56 //系统当前时间 up 227 days, 16:25 //主机已运行时间,时间越大,说明你的机器越稳定。 1user //用户连接数,是总连接数而不是用户数 load average // 系统平均负载,统计最近1,5,15分钟的系统平均负载 那么什么是系统平均负载呢? 系统平均负载是指在特定时间间隔内运行队列中的平均进程数。 如果每个CPU内核的当前活动进程数不大于3的话,那么系统的性能是良好的。 如果每个CPU内核的任务数大于5,那么这台机器的性能有严重问题。 如果你的linux主机是1个双核CPU的话,当Load Average 为6的时候说明机器已经被充分使用了。 1可以被认为是最优的负载值。负载是会随着系统不同改变得。 单CPU系统1-3和SMP系统6-10都是可能接受的。 cat /p ...
Python
未读网络编程 你现在已经学会了写python代码,假如你写了两个python文件a.py和b.py,分别去运行,你就会发现,这两个python的文件分别运行的很好。但是如果这两个程序之间想要传递一个数据,你要怎么做呢? 这个问题以你现在的知识就可以解决了,我们可以创建一个文件,把a.py想要传递的内容写到文件中,然后b.py从这个文件中读取内容就可以了 但是当你的a.py和b.py分别在不同电脑上的时候,你要怎么办呢? 类似的机制有计算机网盘,qq等等。我们可以在我们的电脑上和别人聊天,可以在自己的电脑上向网盘中上传、下载内容。这些都是两个程序在通信。 软件开发架构 我们了解的涉及到两个程序之间通讯的应用大致可以分为两种: 第一种是应用类:qq、微信、网盘、优酷这一类是属于需要安装的桌面应用 第二种是web类:比如百度、知乎、博客园等使用浏览器访问就可以直接使用的应用 这些应用的本质其实都是两个程序之间的通讯。而这两个分类又对应了两个软件开发的架构~ c/s架构 C/S即:Client与Server ,中文意思:客户端与服务器端架构,这种架构也是从用户层面(也可以是物理层面)来划分的。 ...
Python
未读什么是异常 异常是程序发生错误的信号。程序一旦出现错误,便会产生一个异常,若程序中没有处理它,就会抛出该异常,程序的运行也随之终止。在Python中,错误触发的异常如下 而错误分成两种,一种是语法上的错误SyntaxError,这种错误应该在程序运行前就修改正确 12345>>> if File "<stdin>", line 1 if ^SyntaxError: invalid syntax 另一类就是逻辑错误,常见的逻辑错误如 12345678910111213141516171819202122232425## TypeError:数字类型无法与字符串类型相加1+’2’## ValueError:当字符串包含有非数字的值时,无法转成int类型num=input(">>: ") #输入helloint(num)## NameError:引用了一个不存在的名字xx## IndexError:索引超出列表的限制l=['allen','aa']l ...
Python
未读b287d1b6e0bad61174d643199e7e340519a5ff6f3823822d82f8204f2dd22dcf52544522b74fe41a0ae7217ea447a28def0e8c77349cae19a9de1c2b317a0c5687b6c0e86f3dc93b6b36600b65f3ef93970f1dafa702f80a14e4f565850081c4d0eb1162d71c089ea8eae7004fde8b1d95a8c509a6dd47f657c6348fd206091e86c5aedf71d96a94e521a1550bc6796225348f04994749f1082a49e3579b9a627304cb30763bae62c5d41fd27716e6f53d96d6615d06bb60f348f45a250a0627d8fa27b3ff9c0aa752cfe2a0509e8beaccff391480cfdc1f064d172859aa7347532aa92e8eefd8b33574446d757df47c567c32f0d1f4dd93e ...
Python
未读类(class): 定义了一件事物的抽象特点。 对象(object):是类的实例。在操作系统中,系统给对象分配内存空间,而不会给类分配内存空间。 继承(inheritance):是指通过一个已有的类(父类)定义另外一个类(子类),子类共享父类开放的属性和方法。 封装性(Excapsulation):封装性是指类在定义时可以将不能或不需要其他类知道的成员定义成私有成员,而只公开其他类需要的使用的成员,以达到信息隐蔽和简单化的作用。 多态性(Polymorphism):是指同一方法作用于不同对象身上,可以有不同的解释,产生不同的执行结果。在具体的实现方式上,多态性是允许开发者将父对象的变量设置为对子对象的引用,赋值后,父对象变量就可以根据当前的赋值给他的子对象的特性以不同的方式运作。 面向对象编程 面向过程 与 面向对象 面向过程的程序设计:核心是过程二字,过程指的是解决问题的步骤,即先干什么再干什么…面向过程的设计就好比精心设计好一条流水线,是一种机械式的思维方式。 优点是:复杂度的问题流程化,进而简单化(一个复杂的问题,分成一个个小的步骤去实现,实现小的步骤将会非常简单) 缺 ...
Python
未读time与datetime模块 在Python中,通常有这几种方式来表示时间: 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。 格式化的时间字符串(Format String) 结构化的时间(struct_time):struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时) 1234567import time##--------------------------我们先以当前时间为准,让大家快速认识三种形式的时间print(time.time()) # 时间戳:1487130156.419527print(time.strftime("%Y-%m-%d %X")) #格式化的时间字符串:'2017-02-15 11:40:53'print(time.localtime()) #本地时区的struct_timeprint(time.gmtime()) ...
Python
未读模块介绍 在Python中,一个py文件就是一个模块,文件名为xxx.py模块名则是xxx,导入模块可以引用模块中已经写好的功能。如果把开发程序比喻成制造一台电脑,编写模块就像是在制造电脑的零部件,准备好零部件后,剩下的工作就是按照逻辑把它们组装到一起。 将程序模块化会使得程序的组织结构清晰,维护起来更加方便。比起直接开发一个完整的程序,单独开发一个小的模块也会更加简单,并且程序中的模块与电脑中的零部件稍微不同的是:程序中的模块可以被重复使用。所以总结下来,使用模块既保证了代码的重用性,又增强了程序的结构性和可维护性。另外除了自定义模块外,我们还可以导入使用内置或第三方模块提供的现成功能,这种“拿来主义”极大地提高了程序员的开发效率。 模块的使用 import语句 有如下示范文件 12345678910##文件名:foo.pyx=1def get(): print(x)def change(): global x x=0class Foo: def func(self): print('from the func') 要想在另外 ...