python爬虫语法

注释

单行注释 #
多行注释 ‘’’注释内容’’’

变量类型

和java不同不需要定义数据类型 变量名=变量值

在这里插入图片描述

Numbers(数字):int(有符号整型)、long(长整型[也可以代表八进制和16进制])、float(浮点型)、complex(复数)
布尔类型:True、False
String(字符串)
List(列表) 获取下标list[0]
Tuple(元组)
Dictionary(字典)
在这里插入图片描述

查看数据类型 type(变量)

在这里插入图片描述

类型转换

在这里插入图片描述
bool类型转换对非0的都是true,字符串、列表、元组、字典为空bool类型转换为false

运算符

在这里插入图片描述

赋值运算符

单变量赋值:a=10、b=c=20 b=20、c=20
多变量赋值:d,e,f=1,2,3 d=1、e=2、f=3

复合赋值运算符

在这里插入图片描述

比较运算符

在这里插入图片描述

逻辑运算符

在这里插入图片描述

输入(返回的值默认是str)

password=input(“请输入密码”)
print(password)

输出为:

请输入密码8888
8888

格式化输出

%s 代表的是字符串 %d 代表的是数值

age=18
name=”ssosn”
print(“我的名字是%s,我的年龄是%d” % (name,age))

输出为:我的名字是ssosn,我的年龄是18

流程控制语句

if

if 判断条件:

	代码(判断条件为true执行的内容)

else:

	判断条件为false执行的内容

if 判断条件:

	代码(判断条件为true执行的内容)

elif 判断条件:

	代码(判断条件为true执行的内容)

else:

	以上if判断条件均为false执行的内容

for

for 变量 in 要遍历的数据:

	方法体

在这里插入图片描述
range(左闭右开区间)
range(起始值,结束值,步长)

for i in range(5):

	print(i) #输出:0 1 2 3 4

for i in range(1,5):

	print(i) #输出:1 2 3 4

for i in range(1,5,2):

	print(i) #输出:1 3

可通过遍历列表下标:

a_list=[“周杰伦”,”林俊杰”,”许嵩”]
for i in range(len(a_list)):

	print(i) #输出数组下标:0 1 2

字符串高级

获取长度:len len函数可以获取字符串的长度。
在这里插入图片描述
输出:5

查找内容:find 查找指定内容在字符串中是否存在,如果存在就返回该内容在字符串中第一次出现的开始位置索引值,如果不存在,则返回-1.
在这里插入图片描述
输出:4

判断:startswith,endswith 判断字符串是不是以谁谁谁开头/结尾计算对应true/false
在这里插入图片描述
输出:false false

出现次数:count返回 str在start和end之间 在 mystr里面出现的次数
在这里插入图片描述
输出:2

替换内容:replace 替换字符串中指定的内容,如果指定次数count,则替换不会超过count次。
在这里插入图片描述
输出:ddddd

切割字符串:split 通过参数的内容切割字符串
在这里插入图片描述
输出:[‘1’,’2’,’3’]

修改大小写:upper,lower 将字符串中的大小写互换
在这里插入图片描述
输出:china

空格处理:strip 去空格
在这里插入图片描述
输出:1

字符串拼接:join 字符串拼接
在这里插入图片描述
输出:haealalao

列表高级 []

在这里插入图片描述
在这里插入图片描述

列表查找

在这里插入图片描述
在这里插入图片描述

列表删除

del:根据列表下标进行删除

a_list=[1,2,3,4]
del a_list[2]

输出:[1,2,4]

pop:删除列表中的最后一个元素

a_list=[1,2,3,4]
a_list.pop()

输出:[1,2,3]

remove:根据元素的值进行删除

a_list=[1,2,3,4]
a_list.remove(3)

输出:[1,2,4]

元组高级 ()

元组的元素不能修改,列表的元素可以修改

a_tuple=(1,2,3,4)

通过下标获取值

a_tuple[0]

#元组中的元素只有一个,那么踏实整型数据
#定义只有一个元素的元组,需要在卫衣的元素后写一个逗号a_tuple=(5,)

a_tuple=(5)
print(type(a_tuple))

切片

切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作
切片的语法:[起始:结束:步长]

在这里插入图片描述
示例:获取字符串最后四位

rs=“asdsa/ddsad/sssss.jpg”
rs=rs[-4:]
print(rs)

或者使用

rs = “asdsa/ddsad/sssss.jpg”
dot_index = rs.rfind(“.”) # 找到最后一个"."
suffix = rs[dot_index:] # 获取".后面的数据"
print(suffix)

在这里插入图片描述
字典高级 {}(类似java中的map)
查看元素

在这里插入图片描述
在这里插入图片描述
修改元素
字典的每个元素中的数据是可以修改的,只要通过key找到,即可修改
在这里插入图片描述
添加元素
在这里插入图片描述
删除元素
在这里插入图片描述
del删除整个字典
del info
在这里插入图片描述
clear删除整个字典

del clear() #清空指的是将字典中的所有数据都删除掉,保留字典的结构

在这里插入图片描述
字典遍历
1:遍历字典的key

for key in info.keys():
print(key)

2:遍历字典的value

for value in info.values():
print(value)

3:遍历字典的key/value

for key,value in info.items():
print(key,value)

4:遍历字典的项或者元素 ”name”:”monitor” 就是一个项或者元素

for item in info.items():
print(item)

函数的定义和调用
函数定义

def 函数名(参数名):

	代码

函数调用
在这里插入图片描述

#关键字传参

sum(b=200,a=100)

函数返回值
在这里插入图片描述

文件

打开/创建文件

访问模式:w(可写)r(可读)a(在原来的基础上追加)

fp=open(“test.txt”,“w”)
或者
with open(“douban.json”,“w”,encoding=“utf-8”) as fr:
fr.write(“内容”);

写入内容 如果文件存在会覆盖原来的数据

fp.write(“hello world”*5)
#文件的关闭
fp.close()

在这里插入图片描述
在这里插入图片描述

读取文件

访问模式:w(可写) r(可读) a(在原来的基础上追加)

fp=open(“test.txt”,“r”)
或者

with open(“douban.json”,“r”,encoding=“utf-8”) as fr:

	 content=fr.read();

readlines按照行读取,会以列表的形式返回,每个下标就是一行的数据

readline读取第一行的数据

content=fp.readline()
print(content)

序列化和反序列化
通过文件操作,我们可以将字符串写入到一个本地文件。但是,如果是一个对象(例如列表、字典、元组等),就无法直接写入到一个文件里,需要对这个对象进行序列化,然后才能写入到文件里。
设计一套协议,按照某种规则,把内存中的数据转换为字节序列,保存到文件,这就是序列化,反之,从文件的字节序列恢复到内存中,就是反序列化。
对象—》字节序列=序列化字节序列–》对象=反序列化
Python中提供了JSON这个模块用来实现数据的序列化和反序列化。

序列化

导入json模块到该文件中

import json

名称数组

name_list=[“zs”,“ls”,“ww”]

创建文件

fp=open(“test.txt”,“w”)

dump:相当于json.dumps(name_list) 和 fp.write(names) 写法:json.dump(name_list,fp)

dumps:在使用scrapy框架时,框架会返回一个对象 我们要将对象写入到文件中 就要使用json.dumps

names=json.dumps(name_list)

写入文件

fp.write(names)

关闭文件

fp.close()

反序列化

导入json模块到该文件中

import json

将json的字符串变成一个python对象

fp=open(“test.txt”,“r”)
#读取文件
content=fp.read()
#将字符串变成python对象 loads
#load:相当于content=fp.read() 和 json.loads(content) 写法 result=json.load(fp)
result=json.loads(content)

关闭文件

fp.close()
print(“变化之前%s,类型%s” % (content,type(content)))
print(“变化之后%s,类型%s” % (result,type(result)))

异常捕获
#异常的格式
try:
可能出现异常的代码
except 异常的类型:
异常提示
在这里插入图片描述

编码问题
将\u格式的unicode转换成中文
支持‘/’这样的转义序列

content = content.encode(‘utf-8’).decode(‘raw_unicode_escape’)

不支持‘/’这样的转义序列

content = content.encode(‘utf-8’).decode(‘unicode_escape’)

字符串解码报错问题
utf-8没有办法对这个字符串进行解码,因为没有合适的字符映射到该编码,大部分问题出现在字符串中存在类似\uD83C\uDF1D这种以\u开头的字符串,python会认为这是一个unicode编码,于是想办法把它解码成一个字符串,但发现编码映射表中没有这样的字符与之对应(可能这个编码是一个emoji表情)

#print(s) 直接打印输出会报以上错误,需要进行替换,意思是遇到不可unicode解码的字符,就用?替换

s2 = s.encode(‘utf-8’, ‘replace’).decode()

因为encode的函数原型是encode([encoding], [errors=‘strict’]),可以用第二个参数控制错误处理的策略,默认的参数就是strict,代表遇到非法字符时抛出异常;
如果设置为ignore,则会忽略非法字符;
如果设置为replace,则会用?取代非法字符;
如果设置为xmlcharrefreplace,则使用XML的字符引用。

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

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

相关文章

动画系统的前世今生(一)

掐指一算,五年没更新过我的CSDN账号啦,方向也从人工智能变成了计算机图形学,当然也依旧会关注AI的发展,之前在知乎上写了一些文章[传送门],后续也会逐渐同步到CSDN上~ 这个系列将包含五篇文章,内…

JVM 基础篇:类加载器

一.了解JVM 1.1什么是JVM JVM是Java Virtual Machine(Java虚拟机)的缩写,是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟计算机功能来实现的,JVM屏蔽了与具体操作系统平台相关的信息,Java程序只需…

从Excel到智能化:智能报表的演进与未来发展趋势

摘要:本文由葡萄城技术团队于CSDN原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 报表的迭代历程 报表工具的诞生与计算机技术的出现和信息技术的进步密不可分。下图是报…

2017年高热度编程语言简介

世上语言千千万,我却独爱这一种!”这句话用来形容程序员和编程语言之间的爱恨情仇实在是再精准不过了。根据GitHub 2016年的开源报告,其上所有开源项目共包含了316种编程语言,这是一个什么概念呢?举个例子来说,世界上共有226个国…

粤嵌实训医疗项目day02(Vue + SpringBoot)

目录 一、创建vue项目并运行 二、vue-cli中的路由使用 三、element-ui框架、实现页面布局以及vue-路由 四、前端登录页面 五、user登录后端接口完善【后端】 六、user登录前端-请求工具-请求发起【前端】 七、请求的跨域-访问策略 八、完善项目的页面布局、导航菜单以及…

“香蕉大王”的转型升级,能否扩大市场份额?

佳农食品控股 ( 集团 ) 股份有限公司,于2023年10月11日同海通证券签署上市辅导协议,计划登陆上交所主板。据了解这已经不是佳农食品第一次IPO了,2019 年,佳农集团曾向上交所递交过招股说明书,当时的招股书披露,佳农集团…

python爬虫入门(一)web基础

HTTP基本要点 HTTP请求,由客户端向服务端发出,可以分为 4 部分内容:请求方法(Request Method)、请求的网址(Request URL)、请求头(Request Headers)、请求体&#xff08…

如何破解压缩包密码,CTF压缩包处理

I. 引言 压缩包我们经常接触,用于对文件进行压缩存储/传输。压缩包处理在CTF比赛中是非常重要的一块,因为压缩包中可能包含重要信息:许多CTF题目会将关键信息隐藏在压缩包中,参赛者需要解压并查看其中的内容才能获取有用的线索。…

使用Axure RP和内网穿透技术制作静态站点并实现公网访问

文章目录 前言1.在AxureRP中生成HTML文件2.配置IIS服务3.添加防火墙安全策略4.使用cpolar内网穿透实现公网访问4.1 登录cpolar web ui管理界面4.2 启动website隧道4.3 获取公网URL地址4.4. 公网远程访问内网web站点4.5 配置固定二级子域名公网访问内网web站点4.5.1创建一条固定…

如何在linux服务器上安装Anaconda与pytorch

如何在linux服务器上安装Anaconda与pytorch 1,安装anaconda1.1 下载anaconda安装包1.2 安装anaconda1.3 设计环境变量1.4 安装完成验证 2 Anaconda安装pytorch2.1 创建虚拟环境2.2 查看现存环境2.3 激活环境2.4 选择合适的pytorch版本下载2.5 检测是否安装成功&…

Centos磁盘爆满_openEuler系统磁盘爆满清理方法---Linux工作笔记060

磁盘爆满,监控部门就会报警,报警就要处理,但是程序员并不擅长做运维的工作,记录一下把...以后用到会方便: 使用df -h命令可以看到,对应的磁盘占用情况,这里我的/dev/mapper/openeuler-root这个目录 占用的磁盘比较多,到了百分之95了.. 往往就是这个跟目录,我这里/data目录是自…

CVer从0入门NLP(一)———词向量与RNN模型

🍊作者简介:秃头小苏,致力于用最通俗的语言描述问题 🍊专栏推荐:深度学习网络原理与实战 🍊近期目标:写好专栏的每一篇文章 🍊支持小苏:点赞👍🏼、…

[C++随想录] 二叉搜索树

搜素二叉树 二叉搜索树的使用二叉搜索树的模拟实现(K)整体结构循环版本递归版本 二叉搜索树的应用源码(kv) 二叉搜索树的使用 二叉搜索树 相较于 普通的二叉树来说: 根节点的左子树的所有键值都 小于 根节点, 根节点的右子树的所有键值 大于 根节点根节点的 左右子树 都是 二…

2023年中国石英矿资源现状及行业市场供需分析[图]

石英矿为常见的非金属矿物质,具有储量大、分布广、易开采等特点,根据不同成矿特性和理化特性,石英矿物可分为岩浆岩型、变质型、热液型、沉积型,对应的石英岩分别为花岗伟晶岩、脉石英岩、石英岩和石英砂岩。 石英矿物类型和特点…

无人机遥控中应用的2.4GHz无线芯片

无人驾驶飞机简称“无人机”,英文缩写为“UAV”,是利用无线电遥控设备和自备的程序控制装置操纵的不载人飞机,或者由车载计算机完全地或间歇地自主地操作。是一种不需要人操控就能够自主飞行的飞行器,它可以执行多种任务&#xff…

大数据开发中的秘密武器:探索Hadoop纠删码的奇妙世界

随着大数据技术的发展,HDFS作为Hadoop的核心模块之一得到了广泛的应用。为了系统的可靠性,HDFS通过复制来实现这种机制。但在HDFS中每一份数据都有两个副本,这也使得存储利用率仅为1/3,每TB数据都需要占用3TB的存储空间。因此&…

【网络安全入门】学习网络安全必须知道的100 个网络基础知识

前言 先领取资料再阅读哦 【282G】网络安全&黑客技术零基础到进阶全套学习大礼包(附面试题答案),免费分享! 【282G】网络安全&黑客技术零基础到进阶全套学习大礼包(附面试题答案),免…

安装Docker

本安装教程参考Docker官方文档,地址如下:https://docs.docker.com/engine/install/centos/ 卸载旧版 首先如果系统中已经存在旧的Docker,则先卸载: yum remove docker \ docker-client \ docker-client-latest \ docker-common…

【计算机网络】TCP 协议的相关特性

TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的协议。以下是TCP协议的相关特性: 可靠性:TCP通过确认和重传机制保证数据的可靠传输。 面向连接:TCP在传输数据前需要先建立连接。连接的建立过程包括三次握手…

C++ 读MTK代码 综测校准 PSU读开关电源电压或电流 visa

1.C定义dll接口 // The following ifdef block is the standard way of creating macros which make exporting // from a DLL simpler. All files within this DLL are compiled with the PSU_DLL_EXPORTS // symbol defined on the command line. this symbol should not b…