python爬虫语法

news2024/11/25 0:36:44

注释

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

变量类型

和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.coloradmin.cn/o/1123280.html

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

相关文章

用 HarmonyOS 做一个可以手势控制的电子相册应用(ArkTS)

介绍 本篇 Codelab 介绍了如何实现一个简单的电子相册应用,主要功能包括: 1. 实现首页顶部的轮播效果。 2. 实现页面多种布局方式。 3. 实现通过手势控制图片的放大、缩小、左右滑动查看细节等效果。 相关概念 ● Swiper:滑块视图容…

96核的AMD锐龙Threadripper PRO 7995WX性能如何?

AMD新推出的锐龙Threadripper 7000系列可以说是目前最快的工作站处理器,最顶级的锐龙Threadripper PRO 7995WX拥有96个Zen 4内核,共192线程,基础频率2.5GHz,加速频率5.15GHz,拥有384MB L3缓存和多达128条PCI-E 5.0通道…

深入理解 Python 中的真值和假值概念

目录 一、真值和假值的定义 二、技术原理 三、代码实现 四、注意事项 总结 在 Python 中,真值和假值是布尔类型(bool)的两个唯一可能的值。它们在程序的控制流中起着重要作用,用于判断条件是否满足,以及进行逻辑比…

Java进阶篇--Condition与等待通知机制

Condition简介 Condition是Java并发包中的一种机制,用于线程之间的协作和通信。它与锁(Lock)紧密配合使用,并提供了更高级别的等待/通知功能。 下面是Condition的一些特性和区别: 1. 精确唤醒:Condition…

【Spring篇】数据源对象管理加载properties文件

🎊专栏【Spring】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 🥰欢迎并且感谢大家指出小吉的问题 文章目录 🌺数据源对象管理🛸基础版⭐在pom.xml文件中加入下面的代码&…

HVV(护网)蓝队视角的技战法分析

一、背景 1.HVV行动简介 HVV行动是国家应对网络安全问题所做的重要布局之一。从2016年开始,随着我国对网络安全的重视,演习规模不断扩大,越来越多的单位都加入到HVV行动中,网络安全对抗演练越来越贴近实际情况,各机构…

C++对象模型(20)-- 函数语义学:函数和变量的绑定问题

1、静态类型和动态类型 静态类型:对象定义时的类型,编译期间就确定好的。定义的时候是什么就是什么。 动态类型:对象目前所指向的类型,运行时才确定的类型。一般只有指针和引用才有动态类型。 比如下面的代码: cla…

SpringBoot+Vue实现AOP系统日志功能

AOP扫盲:Spring AOP (面向切面编程)原理与代理模式—实例演示 logs表: CREATE TABLE logs (id int(11) NOT NULL AUTO_INCREMENT,operation varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 操作名称,type varchar(255) COLL…

博途S7-1200PLC自由口通信(Send_P2P和Receive_P2P指令编程)

S7-1200PLC的MODBUS-RTU通信的实战应用和完整SCL源代码,请参看下面的文章链接 https://rxxw-control.blog.csdn.net/article/details/132845221https://rxxw-control.blog.csdn.net/article/details/132845221MODBUS-RTU协议和常用功能码解读 https://rxxw-control.blog.csd…

【精选】自学网络安全的三个必经阶段(含路线图)

一、为什么选择网络安全? 这几年随着我国《国家网络空间安全战略》《网络安全法》《网络安全等级保护2.0》等一系列政策/法规/标准的持续落地,网络安全行业地位、薪资随之水涨船高。 未来3-5年,是安全行业的黄金发展期,提前踏入…

[java进阶]——多线程Thread类,处理并发异常的方法

🌈键盘敲烂,年薪30万🌈 目录 一、理解进程与线程 二、Thread类 三、自定义线程的三种实现方式 四、多线程应用场景 五、解决并发问题的方法 5.1 synchronized()关键字 - 同步代码块 5.2使用lock锁 一、理解进程与线程 运行一个程序占用…

VS Code设置代码自动保存

给新电脑安了VS Code,提交运行代码前总是忘了保存,之前的电脑里是设置了自动保存按钮,所以导致我在新电脑上总是忘了。特记录VS Code设置自动保存功能。 首先在右下角找到“设置”按钮 然后在输入框输入“auto save”进行查找 可以看到自动…

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

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

CSDN提供的Markdown常用模板

标题 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ,将会带来全新的写作体验;在创作中心设置…

1024程序员节特辑:【Spring Boot自动配置原理揭秘】

自动配置原理 概述原理Spring Boot Starterspring.factories 文件ConditionalOnX 注解配置 Bean配置属性 源码剖析复合AnnotationEnableAutoConfigurationAutoConfigurationImportSelector 主页传送门:📀 传送 概述 Spring Boot 是一个用于创建独立的、…

.rancher-pipeline.yml

一、注意点 其实下文二的image是基于这个镜像作为基础镜像在这个镜像中执行打包,shellScript 当前路径是你代码块与上图settings.xml,图中的settings.xml可以替换下你当前镜像的settings.xml 示例 二、.rancher-pipeline.yml ${CICD_GIT_BRANCH}这些从官…

天下苦定制久矣,平台化建设到底难在哪里?

为什么需要平台 随着业务的不断发展,软件系统不可避免的走向熵增:复杂度越来越高、研发效率越来越差、稳定性逐渐降低等。这时抽象核心能力,走向平台化的道路成为很多系统的首要选择 平台的建设目标 产品的核心价值在于其有效性和用户体验…

视频号视频如何下载(WeChatVideoDownloader)

背景介绍 最近需要一个视频号里面的视频进行宣传用,网上找了很多方法都不行,特别是下载抓包工具Fiddler,然后监控HTTPS请求的,截取URL把URL中20302改成20304,再用IDM工具下载对应的资源,最后修改后缀名.mp…

《红蓝攻防对抗实战》三.内网探测协议出网之HTTP/HTTPS协议探测出网

目录 一. 在 Windows 操作系统中探测 HTTP/HTTPS 出网 1. Bitsadmin 命令 2.Certuil 命令 2.Linux系统探测HTTP/HTTPS出网 1.Curl命令 2.Wget命令 对目标服务器探测 HTTP/HTTPS 是否出网时,要根据目标系统类型执行命令,不同类型的操作系统使用的探…

GeoServer改造Springboot源码一(公共部分)

今天开始开启关于GeoServer的一个全新系列,主要是把改造Springboot后的详细代码粘贴出来,此文应配合《GeoServer改造Springboot启动》系列共同阅读,按照前系列的时间顺序结合此系列的源码展示可以快速构建GeoServer功能的二次封装的后端系统。 一、Springboot部分源码结构 …