当前位置: 首页 > news >正文

python基础及网络爬虫

在这里插入图片描述

网络爬虫(Web crawler),有时候也叫网络蜘蛛(Web spider),是指这样一类程序——它们可以自动连接到互联网站点,并读取网页中的内容或者存放在网络上的各种信息,并按照某种策略对目标信息进行采集(如对某个网站的全部页面进行读取)。实际上,世界上最大的网站——Google搜索本身就建构在爬虫技术之上,像Google、百度这样的搜索引擎会通过爬虫程序来不断更新自身的网站内容和对其他网站的网络索引。某种意义上说,我们每次通过搜索引擎查询一个关键词,就是在搜索引擎服务者的爬虫程序所“爬”到的信息中进行查询。当然,搜索引擎背后所使用的技术十分复杂,其爬虫技术通常也不是一般个人所开发的小型程序所能比拟的,不过,爬虫程序本身其实并不复杂,只要懂一点编程知识,了解一点HTTP和HTML,就可以写出属于自己的爬虫,实现很多有意思的功能。

1.1 了解python

Guido van Rossum在1989年发明了Python,而Python的第一个公开发行版发行于1991年。因为Guido是一部电视剧“Monty Python’s Flying Circus”的爱好者,因此将这种新的脚本语言命名为Python。从最根本的角度来说,Python是一种解释型、面向对象的、动态数据类型的高级程序设计语言。注:Python是开源的,源代码遵循GPL(GNU General Public License)协议,对所有个人开发者是完全开发的。
python的简明语法和各式各样的开源库使得Python在网络爬虫方向得天独厚,对于个人开发爬虫程序而言,一般对于性能的要求不会太高,因此,虽然我们一般认为Python在性能上难以与C/C++和Java相比,但总的来说,使用Python有助于更好更快地实现我们所需要的功能。另外,考虑到Python社区贡献了很多各有特色的库,很多都能直接拿来编写我们的爬虫程序,因此,Python的确是目前最好的选择。

1.2 配置开发环境

在开始探索Python的世界之前,我们首先需要在自己的机器上安装Python。值得高兴的是,Python不仅免费、开源,而且坚持轻量级,安装过程并不复杂。如果使用Linux系统,可能已经内置了Python(虽然版本有可能是较旧的),使用苹果电脑(macOS系统)的话,一般也已经安装了命令行版本的Python 2.x。在 Linux 或 macOS X 系统上检测 Python 3 是否安装的最简单办法是使用终端命令,在terminal应用中输入python3命令并回车执行,观察是否有对应的提示出现。至于Microsoft Windows系统,在目前最新的Win10版本上也并没有内置Python,因此我们必须手动安装。

1.2.1 windows上安装

Python官网
在这里插入图片描述
这里需要注意的是选择对应架构的版本,我们需要首先搞清楚自己的系统是32位还是64位的
根据安装程序的导引,我们一步步进行,就能完成整个安装。如果最终看到类似图1-2这样的提示,就说明安装成功。
在这里插入图片描述
这时检查我们的“开始”菜单,就能看到Python3.x的应用程序,其中有一个“IDLE”(意为“integrated development environment”)程序,我们可以单击此项目开始在交互式窗口中使用Python Shell。
在这里插入图片描述
在这里插入图片描述

1.2.2 在Ubuntu和MacOS上安装

Ubuntu是诸多Linux发行版中受众较多的一个系列。我们可以通过Applicatons中的添加应用程序进行安装,在其中搜索Python3,并在结果中找到对应的包,进行下载。如果安装成功,我们将在Applications(应用程序)中找到Python IDLE,进入Python Shell中。
访问 Python官网并下载对应的 Mac 平台安装程序,根据安装包的指示进行操作,我们最终将看到类似的成功提示:在这里插入图片描述
关闭该窗口,并进入Applications(或者是从LaunchPad页面打开)中,我们就能找到Python Shell IDLE,启动该程序,看到的结果应该和Windows平台上的结果类似。

1.3 Python基本语法介绍

1.3.1 hello world

输出一行“Hello, World”,在C语言中需要的程序语句是这样的:
在这里插入图片描述
而在Python里,可以用一行完成。
在这里插入图片描述

1.3.2 数据类型

在Python中内置的主要数据类型包括:
1、Number,数值类型。可以是 Integers(1 和 2)、Float(1.1 和 1.2)、Fractions(1/2 和 2/3)、或者是 Complex Number(数学中的复数)。
2、String,字符串,主要描述文本。
3、List,列表,一个包含元素的序列。
4、Tuple,元组,和列表类似,但是是不可变的。
5、Set,一个包含元素的集合,其中的元素是无序的。
6、Dict,字典,由一些键值对构成。
7、Boolean,布尔类型,其值或为 True 或为 False
8、Byte,字节, 例如一个以字节流表示的JPG文件

int和float之间,Python一般会使用是否有小数点来做区分
在这里插入图片描述
这里需要注意的是,将一个 int 与一个 int 相加将得到一个 int 。但将一个 int 与一个 float 相加将得到一个 float 。
这是因为Python会 把 int 强制转换为 float 以进行加法运算:在这里插入图片描述
使用内置的关键字进行int与float之间的强制转换是经常用到的:在这里插入图片描述
Python2中曾有int和long(长整数类型)的区分,但在Python3中,int吸收了2.x版本中的int和long,不再对较大的整数和较小的整数做区分。有了数值,我们就有了数值运算:

在这里插入图片描述 | 在这里插入图片描述
Python中还有相对比较特殊的分数和复数,分数可以通过fractions模块中的Fraction对象构造:在这里插入图片描述
复数可以用使用函数 complex(real, imag) 或者是带有后缀j的浮点数来创建:在这里插入图片描述
布尔类型本身非常简单,Python中的布尔类型以True和False两个常量为值:在这里插入图片描述
不过Python中对布尔类型和if else判断的结合比较灵活
在介绍字符串之前,我们先对list(列表)和tuple(元组)做一个简单的了解,因为list涉及一个Python中非常重要的概念:可迭代对象。对于列表而言,序列中的每一个元素都在一个固定的位置上(称之为索引),索引从“0”开始。列表中的元素可以是任何数据类型,Python中列表对应的是中括号“[]”的表示形式。在这里插入图片描述
列表切片(slice)可以简单地描述为从列表中取一部分的操作,通过指定两个索引值,可以从列表中获取称作“切片”的某个部分。返回值是一个新列表,从第一个索引开始,知道第二个索引结束(不包含第二个索引的元素),列表切片的使用非常灵活:
在这里插入图片描述
向一个list中添加新元素的方法也很多样,常见的包括:
在这里插入图片描述
这里要注意的是extend接受一个列表,并把其元素分别添加到原有的列表,类似“扩展”。而append是把参数(参数有可能也是一个列表)作为一个元素整体添加到原有的列表中。insert() 方法会将单个元素插入到列表中。第一个参数是列表中将插入的位置(索引)。
从列表中删除元素,可使用的方法也不少:在这里插入图片描述
元组(tuple)与列表非常相似,最大的区别在于:1,元组是不可修改的,定义之后就“固定”了。2,元组在形式上是用“()”这样的圆括号括起来的。由于元组是“冻结”的,所以不能插入或删除元素。其他一些操作与列表类似:在这里插入图片描述
【提示】元素可修改与不可修改是列表与元组最大(或者说唯一)的区别,基本上除了修改内部元素的操作,其他列表适用的操作都可以用于元组。
在创建一个字符串时,我们将其用引号括起来,引号可以是单引号(')或者双引号("),两者没有区别。字符串也是一个可迭代对象,因此,与取得列表中的元素一样,也可以通过下标记号取得字符串中的某个字符,一些适用于list的东西同样适用于str:
在这里插入图片描述
集合的特点是无序且值唯一,创建集合和操作集合的常见方式包括:
在这里插入图片描述
在这里插入图片描述
字典(dict)相对于列表、元组和集合,会显得稍微复杂一点。Python中的字典是键值对(key-value)的无序集合。在形式上也和集合类似,创建字典和操作字典的基本方式如下:
在这里插入图片描述
在这里插入图片描述

相关文章:

  • C语言第三十七弹---文件操作(下)
  • 【新手适用】手把手教你从零开始实现一个基于Pytorch的卷积神经网络CNN一: 创建model模块和加载数据集
  • MySQL 函数
  • Java后端八股------消息中间件篇
  • 微信小程序云开发教程——墨刀原型工具入门(素材面板)
  • 记录一个编译的LLVM 含clang 和 PTX 来支持 HIPIFY 的构建配置
  • Java的控制流语句详解
  • 网络通信另个角度的认识(进程间通信),端口号(为什么要有,和pid的关系,如何封装,和进程的定位原理+对应关系)客户端如何拿到服务端的port
  • 数据结构奇妙旅程之二叉平衡树进阶---AVL树
  • scrapy的基本使用介绍
  • CUDA入门之统一内存
  • 学习大数据,所需要Java基础(9)
  • taosdb快速入门
  • Docker的基本概念和优势
  • 【鸿蒙 HarmonyOS 4.0】常用组件:List/Grid/Tabs
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 4个实用的微服务测试策略
  • ERLANG 网工修炼笔记 ---- UDP
  • Python_OOP
  • Python中eval与exec的使用及区别
  • React as a UI Runtime(五、列表)
  • SQL 难点解决:记录的引用
  • 百度小程序遇到的问题
  • 从PHP迁移至Golang - 基础篇
  • 从零开始学习部署
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 关于springcloud Gateway中的限流
  • 精彩代码 vue.js
  • 深度学习入门:10门免费线上课程推荐
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • RDS-Mysql 物理备份恢复到本地数据库上
  • Spring第一个helloWorld
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​力扣解法汇总946-验证栈序列
  • # 透过事物看本质的能力怎么培养?
  • ###项目技术发展史
  • #、%和$符号在OGNL表达式中经常出现
  • #大学#套接字
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (145)光线追踪距离场柔和阴影
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (安卓)跳转应用市场APP详情页的方式
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (接口封装)
  • (六)Hibernate的二级缓存
  • *上位机的定义
  • .cn根服务器被攻击之后
  • .NET 表达式计算:Expression Evaluator