定义与赋值 在程序设计过程中,对于不需要改变且不能改变的字面值,称为常量。 变量与常量相反, 变量的值可以改变。Python 中使用变量来收集和记录数据。每个变量用一个变量名来表示,在使用前都必须赋值。语法如下所示: 1变量 = 值 如: 1Pi = 3.14 命名规则 变量的命名需要遵循以下规则: 只能是一个词。 只能包含字母、数字和下划线。 不能以数字开头。 不要使用 Python 保留字(关键字)。 常用变量的含义命名。 变量名为大小写敏感,意味着 Hello 和 hello 是两个完全不同的变量。 Python 支持多个变量同时赋值,格式为: 1变量1, 变量2 = 值1, 值2 如: 1a, b = 1, 2 这个性质还可以用于交换两个变量的值: 123a, b = 1, 2#交换变量a与变量b的值a, b = b, a
Pandas 是基于 NumPy 数组构建的,特别是基于数组的函数和不使用 for 循环的数据处理。 虽然 Pandas 采用了大量的 NumPy 编码风格,但二者最大的不同是 Pandas 是专门为处理表格和混杂数据设计的。而 NumPy 更适合处理统一的数值数组数据。 Pandas 数据结构 要使用 Pandas,首先就得熟悉它的两个主要数据结构:Series和DataFrame。 Series Series是一种类似于一维数组的对象,它由一组数据(各种 NumPy 数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数据即可产生最简单的Series: 123import pandas as pdobj = pd.Series([4,7,-5,3])print(obj) Series的字符串表现形式为:索引在左边,值在右边。由于没有为数据指定索引,于是会自动创建一个 0到N-1(N为数据的长度)的整数型索引。可以通过Series的values和index属性获取其数组表示形式和索引对象: 12345import pandas as pdobj = pd.Series([4, ...
什么是爬虫 网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。 大家可以理解为在网络上爬行的一只蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛,如果它遇到自己的猎物(所需要的资源),那么它就会将其抓取下来。比如它在抓取一个网页,在这个网中他发现了一条道路,其实就是指向网页的链接,那么它就可以爬到另一张网上来获取数据。 为什么要反爬虫 反爬虫,即使用任何技术手段,阻止别人批量获取自己网站信息的一种方式。 如果不反爬虫,会有人不断的发起请求获取数据,动态服务器会有大量的异常错误或者正常的意外流量,流量被浪费在了(程序员/组织)获取数据上,而不是分发数据(给用户)上。 这对网站官方会造成极大的负面影响,所以要反爬虫。 反爬虫的手段 基于请求头 反爬虫首先是基于请求头的,爬虫程序的请求头通常与用户使用的浏览器的请求头不同,通过请求头,可以筛除很大一部分的程序请求。 基于用户行为 反爬虫手段还可以基于用户行为,对于一些异常行为 ...
Beautiful Soup库简介 Beautiful Soup 简称 BS4(其中 4 表示版本号)是一个 Python 中常用的页面解析库,它可以从 HTML 或 XML 文档中快速地提取指定的数据。 相比于之前讲过的 lxml 库,Beautiful Soup 更加简单易用,不像正则和 XPath 需要刻意去记住很多特定语法,尽管那样会效率更高更直接。 对大多数 Python 使用者来说,好用会比高效更重要。 Beautiful Soup库为第三方库,需要我们通过pip命令安装: 1pip install bs4 BS4 解析页面时需要依赖文档解析器,所以还需要一个文档解析器。 Python 自带了一个文档解析库 html.parser, 但是其解析速度稍慢,所以我们结合上篇内容(Python 文档解析:lxml库的使用),安装 lxml 作为文档解析库: 1pip install lxml Beautiful Soup库方法介绍 使用 bs4 的初始化操作,是用文本创建一个 BeautifulSoup 对象,并指定文档解析器: 123456789101112131415fro ...
lxml库简介 lxml 是 Python 常用的文档解析库,能够高效地解析 HTML/XML 文档,常用于 Python 爬虫。 lxml 为第三方库,需要我们通过pip命令安装: 1pip install lxml lxml库方法介绍 lxml 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,让我们先导入模块: 1from lxml import etree 使用 etree 模块的 HTML() 方法可以创建 HTML 解析对象: 123from lxml import etreeparse_html = etree.HTML(html) HTML() 方法能够将 HTML 标签字符串解析为 HTML 文件,并且可以自动修正 HTML 文本: 12345678910111213141516from lxml import etreehtml_str = '''<div> <ul> <li><a href="www.python.org"&g ...
requests库简介 requests 是 Python 中比较常用的网页请求库,主要用来发送 HTTP 请求,在使用爬虫或测试服务器响应数据时经常会用到,使用起来十分简洁。 requests 为第三方库,需要我们通过pip命令安装: 1pip install requests requests库方法介绍 下表列出了requests库中的各种请求方法: 方法 描述 delete(url, args) 发送 DELETE 请求到指定 url get(url, params, args) 发送 GET 请求到指定 url head(url, args) 发送 HEAD 请求到指定 url patch(url, data, args) 发送 PATCH 请求到指定 url post(url, data, json, args) 发送 POST 请求到指定 url put(url, data, args) 发送 PUT 请求到指定 url request(method, url, args) 发送指定的请求方到指定 url 每次调用 reques ...
turtle 简介 turtle库是 turtle 绘图体系 Python 的实现,turtle 库是 python 的标准库之一,属于入门级的图形绘制函数库。 turtle 库绘制原理:有一只海龟在窗体正中心,在画布上游走,走过的轨迹形成了绘制的图形,海龟由程序控制,可以自由改变颜色、方向宽度等。 官方文档地址:https://docs.python.org/3/library/turtle.html turtle 基础知识 画布 画布(canvas)就是 turtle 为我们展开用于绘图区域,我们可以设置它的大小和初始位置。 我们可以通过screensize函数来设置画布的大小和背景颜色: 1turtle.screensize(canvwidth=None, canvheight=None, bg=None) 其中screensize函数的三个参数分别表示画布的宽、高和背景颜色。 或者通过setup函数来设置: 1turtle.setup(width=0.5, height=0.75, startx=None, starty=None) 其中参数width,height:输入宽和 ...
NumPy简介 NumPy(Numerical Python的简称)是Python数值计算最重要的基础包。大多数提供科学计算的包都是用NumPy的数组作为构建基础。 NumPy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组。 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成由C、C++、Fortran等语言编写的代码的API。 NumPy对于数值计算特别重要的原因之一,是因为它可以高效处理大数组的数据。这是因为: NumPy是在一个连续的内存块中存储数据,独立于其他Python内置对象。NumPy的C语言编写的算法库可以操作内存,而不必进行类型检查或其它前期工作。比起Python的内置序列,NumPy数组使用的内存更少。 NumPy可以在整个数组上执行复杂的计算,而不需要Python的for循环。 在jupyter notebook中运行以下代码,可以比较NumPy数组和Python列表的数据运算效率: 12345 ...
学习笔记
未读类与对象 Python 是一种面向对象的编程语言。 Python 中的几乎所有东西都是对象,拥有属性和方法。 类(Class)类似对象构造函数,或者是用于创建对象的“蓝图”。 在现实生活中,类是所有同种物体的统称,如:人类、鸟类等。 而对象则是一个类中的具体的一个个体,如:人类小明是人类的具体个体。 类的定义 在Python中,定义一个类的格式如下: 123456class ClassName: <statement-1> . . . <statement-N> 通常类中还包含一个初始化函数,帮助我们初始化对象的属性: 123456class ClassName: def __init__(self, ···): ··· ··· ··· ··· 让我们定义一个学生类,并实例化出一个对象: 1234567class Student: # self 代表类的当前实例 def __init__(self, name, age, ID): self.name = name self.age ...
常用函数 使用random库主要目的是生成随机数,因此,只需要查阅该库的随机数生成函数,找到符合使用场景的函数使用即可。这个库提供了不同类型的随机数函数,所有函数都是基于最基本的random.random()函数扩展而来。 random库中的常用函数如下: 函数 描述 seed(a=None) 初始化随机数种子,默认值为当前系统时间 random() 生成一个[0.0,1.0)之间的随机小数 randint(a, b) 生成一个[a,b]之间的整数 getrandbits(k) 生成一个k比特长度的随机整数 randrange(start,stop[, step]) 生成一个[start, stop)之间以step为步数的随机整数 uniform(a, b) 生成一个[a, b]之间的随机小数 choice(seq) 从序列类型(例如:列表)中随机返回一个元素 shuffle(seq) 将序列类型中元素随机排列,返回打乱后的序列 sample(pop,k) 从pop类型中随机选取k个元素,以列表类型返回 生成随机数之前可以通过seed ...