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)的无序集合。在形式上也和集合类似,创建字典和操作字典的基本方式如下:
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/739371.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记录一下C++的学习之旅吧--C++基础

文章目录 前言using namespace std; 使用标准命名空间一、helloworld-输出表示1.1代码1.2 运行结果 二、变量2.1.1 普通变量代码2.1.2 运行结果2.2.1 常量和变量代码2.2.2 运行结果 三、sizeof---统计数据类型所占的内存大小3.1 代码3.2 运行结果 四、小数表示4.2 运行结果 五、…

基于React低代码平台开发:直击最新高效应用构建

🏡浩泽学编程:个人主页 🔥 推荐专栏:《深入浅出SpringBoot》《java对AI的调用开发》 《RabbitMQ》《Spring》《SpringMVC》《项目实战》 🛸学无止境,不骄不躁,知行合一 文章目录…

【JavaWeb】Tomacat部署Web项目

Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍【JavaWeb】Tomacat部署Web项目的详细使用以及部分理论知识 🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁 🍉博主收将持续更新学习记录获,友友们有任何问题…

《为什么学生不喜欢上学?》读书笔记

书简介 美国弗吉尼亚大学心理学教授威林厄姆的教育心理学著作。 作者在文末揭示了撰写此书的目的: 【 教育是将世代积累的智慧传递给孩子,我们强烈地相信它的重要性,因为我们知道,它为每个孩子以及其他所有人都带来了更好生活的希…

./ 相对路径与node程序的启动目录有关

node:internal/fs/sync:78 return binding.openSync( ^ Error: ENOENT: no such file or directory, open D:\前端的学习之路\项目\codeHub\keys\private_key.pem at Object.open (node:internal/fs/sync:78:18) at Object.openSync (node:fs:565:…

【网站项目】014乡镇自来水收费系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

JavaScript---lazyload图片懒加载处理_IntersectionObserver

IntersectionObserver API兼容性: 部分代码展示: // 懒加载处理const imgsElem document.querySelectorAll(img);const topElem document.querySelector(#top);// IntersectionObserverconst Observer new IntersectionObserver((entries, observer) …

PWARL CTF and others

title: 一些复杂点的题目 date: 2024-03-09 16:05:24 tags: CTF 2024年3月9日 今日习题完成: 1.BUU [网鼎杯 2020 半决赛]AliceWebsite 2.[RoarCTF 2019]Online Proxy 3.[Polar CTF]到底给不给flag呢 4.网鼎杯 2020 总决赛]Game Exp [RoarCTF 2019]Online Proxy …

【软件工程导论】——软工学绪论及传统软件工程(学习笔记)

📖 前言:随着软件产业的发展,计算机应用逐步渗透到社会生活的各个角落,使各行各业都发生了很大的变化。这同时也促使人们对软件的品种、数量、功能和质量等提出了越来越高的要求。然而,软件的规模越大、越复杂&#xf…

X64 页表结构

PML4(Page Map Level 4)是x86-64架构中用于管理虚拟内存地址翻译的四级页表结构之一。它是一种树形结构,由多个页目录表(Page Directory Pointer Table,PDPT)组成,每个PDPT有512个指向下一级页表…

Hololens 2应用开发系列(3)——MRTK基础知识及配置文件配置(中)

Hololens 2应用开发系列(3)——MRTK基础知识及配置文件配置(中) 一、前言二、输入系统2.1 MRTK输入系统介绍2.2 输入数据提供者(Input Data Providers)2.3 输入动作(Input Actions)2…

Date类型及dayjs的使用总结

一、Date() Date数据类型用于处理日期和时间,它可以表示自1970年1月1日00:00:00 UTC(Coordinated Universal Time,国际协调时间)以来的毫秒数。 1.创建Date对象 例如:Tue Oct 31 2023 14:01:33 GMT0800 (中国标准时…

算法刷题day28

目录 引言一、截断数组二、双端队列三、日期统计 引言 这几道题是周赛里的几道题目,第一道题目我没用这种方法,但还是做出来了,用的一种比较特殊的思考方法,就是把每一个点都判断出来,不满足要求的就舍弃,…

【你也能从零基础学会网站开发】Web建站之javascript入门篇 JavaScript事件处理

🚀 个人主页 极客小俊 ✍🏻 作者简介:程序猿、设计师、技术分享 🐋 希望大家多多支持, 我们一起学习和进步! 🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注 什么是DHTML …

Linux基础命令[16]-head

文章目录 1. head 命令说明2. head 命令语法3. head 命令示例3.1 不加参数3.2 -c(按照字节显示)3.3 -n(按照行数显示)3.4 -v(显示文件名) 4. 总结 1. head 命令说明 head:用来显示文件开头&…

Linux认识与学习BASH

Linux认识与学习BASH 认识BASH这个Shellshell是什么系统的合法shell与/etc/shells功能Bash Shell的功能查询命令是否为Bash shell 的内置命令(type)命令的执行与快速编辑按钮 shell的变量功能什么是变量?变量的使用与设置:echo、变量设置规则、unset环境…

springboot网页时装购物系统链接

链接:https://pan.baidu.com/s/1mCmCSbqUCv48_a6wiLBdJg?pwdfalz 提取码:falz 2600套项目源码 https://kdocs.cn/l/cuAdxEBfLiqA 工作室精心制作,包括小程序项目,springboot项目,传统ssm项目,前后端分离项目。你可以用来制作自…

Stable Diffusion 模型下载:Comic Babes(漫画宝贝)

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八 下载地址 模型介绍 条目内容类型大模型基础模型SD 1.5来源CIVITAI作者datmuttdoe文件名称comicBabes_v2.safet…

如何用 RAG 技术玩转文档问答?Milvus × 网易有道 QAnything 为你揭秘!

过去一年,RAG 在技术层面发展迅速,为向量数据库赛道添了一把火。RAG 和向量数据库的结合,能够有效解决幻觉、时效性差、专业领域知识不足等阻碍大模型应用的核心问题。 不久前,网易有道开源了自研的 RAG 引擎 QAnything。用户的任…

Q学习(Q-Learning)

Q学习是一种强化学习算法,用于指导代理(Agent)在给定环境中如何采取最优行动。它通过学习状态中的行动价值来实现,属于从与环境的交互中学习,通过尝试和错误,以实现目标的机器学习算法。 下面是Q学习工作原…