第一节, 爬虫入门+python基础内容回顾.

一. 需要掌握的py基础

1. 基础语法相关

1.1 if循环

 if 条件:# 事情1else:# 事情2当你需要判断的时候. 就去写if.

上面就是if的最基础的语法规则. 含义是, 如果条件为真, 去执行事情1, 如果条件不真, 去执行事情2

1.2 while循环

 while 条件:循环体

1.3. 关于True和False

  # 几乎所有能表示为空的东西. 都可以认为是Falseprint(bool(0))print(bool(""))print(bool([]))print(bool({}))print(bool(set()))print(bool(tuple()))print(bool(None))# 上面这一坨全是False, 相反的. 都是真. 利用这个特性. 我们可以有以下的一些写法

2. 字符串

2.1. 索引和切片

索引, 就是第几个字符. 它从0开始。
切片, 从字符串中提取n个字符。

  s = "我爱小明,小明爱我"print(s[1])  #  爱print(s[0])  #  我print(s[2:4])  从第2个, 到第4个(取不到4)  # 小明

2.2. strip()

strip()可以去掉字符串左右两端的空白(空格, 换行\n, 回车\r, 制表符\t)

 s = "    \t\t\t我的天哪\r\r      \n\n  " s1 = s.strip()print(s1)  # `我的天哪`

2.3. split()

进行切割操作

  s = "10,男人本色,100000万"  tmps = s.split(",")  # 根据逗号进行切分name = tmps[1]print(name)  # 男人本色id, name, money = s.split(",")  # 切割后. 把三个结果直接怼给三个变量print(id)print(name)print(money)

2.4. replace() 字符串替换

  s = "我      \t\t\n\n爱   小       明    "  s1 = replace(" ", "").replace("\t", "").replace("\n", "")  # 干掉空格, \t, \nprint(s1)  # 我爱小明

2.5 . join() 拼接字符串

  lst = ["我妈", "不喜欢", "小明"]  # 有时,由于网页结构的不规则, 导致获取的数据是这样的. s1 = "".join(lst)  # 用空字符串把lst中的每一项拼接起来print(s1)  # 我妈不喜欢小明lst2 = ["\n\r","\n\r","周杰伦\n\r", "\n不认识我\r"] s2 = "".join(lst2).replace("\n", "").replace("\r", "")print(s2)  # 周杰伦不认识我

2.6. f-string

  s = "周杰伦"s1 = f"我喜欢{s}"  #  它会把一个变量塞入一个字符串print(s1)  # 我喜欢周杰伦k = 10085s2 = f"我的电话号是{k+1}" # 它会把计算结果赛入一个字符串print(s2)  # 我的电话号是10086

3. 列表

3.1. 索引, 切片

列表的索引和切片逻辑与字符串完全一致

lst = ["赵本山", "王大陆", "大嘴猴", "马后炮"]
item1 = lst[2]  # 大嘴猴
item2 = lst[1]  # 王大陆lst2 = lst[2:]
print(lst2)  # ["大嘴猴", "马后炮"]# 注意, 如果列表中没有数据. 取0会报错
lst = []
print(lst[0])  # 报错, Index out of bounds# 注意, 如果给出的索引下标超过了列表的最大索引. 依然会报错
lst = ["123", "456"]
print(lst[9999])  # 报错, Index out of bounds

3.2. append() 增加

给列表添加数据. append

lst = [11,22]
lst.append(33)
lst.append(44)
print(lst)  # [11,22,33,44]

3.3. remove() 删除

lst.remove("周润发")  #  把周润发删掉

3.4. 修改

对列表内容直接赋值,进行修改。

lst = ["赵本山", "王大陆", "大嘴猴", "马后炮"]
lst[1] = "周杰伦"
print(lst)  # ["赵本山", "周杰伦", "大嘴猴", "马后炮"]

3.5. range

用for循环数数的一个东西

for i in range(10):print(i)   # 从0数到9for i in range(5, 10):print(i)  # 从5 数到 9

3.6. 查询(重点)

lst = ["赵本山", "周杰伦", "大嘴猴", "马后炮"]
print(lst[0])
print(lst[1])
print(lst[2])
print(lst[3])# 循环列表的索引
for i in range(len(lst)):print(lst[i])
# 循环列表的内容
for item in lst:print(item)

4. 字典

字典可以成对儿的保存数据.

4.1. 增加

通过键值对的形式进行增加内容。

dic = {}
dic['name'] = '张三'
dic['age'] = 18print(dic)  # {"name": "张三", "age": 18}

4.2. 修改

修改也是通过键值对直接赋值,进行修改内容。

dic = {"name": "张三", "age": 18}
dic['age'] = 19
print(dic)  # {"name": "张三", "age": 19}

4.3. 删除(不常用)

使用.pop()函数进行删除,一般不常用。

dic = {"name": "张三", "age": 18}
dic.pop("age")
print(dic)  # {'name': '张三'}

4.4. 查询

dic = {"name": "张三", "age": 18}a = dic['name']  # 查询'name'的值
print(a)  # 张三b = dic['age']  # 拿到dic中age对应的值
print(b)  # 18c = dic['王小五']   # 没有哈拉少. 报错
d = dic.get("王小五")  # 没有哈拉少, 不报错. 返回None. 它好. 它不报错

4.5.循环

dic = {"name": "张三", "age": 18}
for k in dic:  # 循环出所有的keyprint(k)  print(dic[k])  # 获取到所有的value并打印

4.6.嵌套

dic = {"name": "老王","age": 18,"wife": {"name": "翠花","age": 19,},"children": [{'name':"王小丫", "age": 19},{'name':"王二丫", "age": 18},{'name':"王三丫", "age": 17},]
}value = dic["老李"]  # key不存在会报错
value = dic.get("老李")  # 不会报错, 返回给你一个None# 老王的第二个孩子的名字
print(dic['children'][1]['name'])
# 老王所有孩子的名称和年龄
for item in dic['children']:print(item['name'])print(item['age'])

5. 字符集和bytes

字符集, 记住两个字符集就够了. 一个是utf-8, 一个是gbk. 都是支持中文的。

# 把字符串转化成字节
bs = "我的天哪abcdef".encode("utf-8")
print(bs)  #  b'\xe6\x88\x91\xe7\x9a\x84\xe5\xa4\xa9\xe5\x93\xaaabcdef'
# 一个中文在utf-8里是3个字节. 一个英文是一个字节. 所以英文字母是正常显示的# 把字节还原回字符串
bs = b'\xe6\x88\x91\xe7\x9a\x84\xe5\xa4\xa9\xe5\x93\xaaabcdef'
s = bs.decode("utf-8")
print(s)

6. 文件操作

python中. 想要处理一个文件. 必须用open()先打开一个文件

语法规则

f = open(文件名, mode="模式", encoding='文件编码')
f.read()|f.write()
f.close()

文件名:指需要打开文件的名称。

模式: 我们需要知道的主要有4个。 分别是: r, w, a, b。

  1. r 只读模式. 含义是, 当前这一次open的目的是读取数据。 所以, 只能读,不能写。
  2. w 只写模式. 含义是, 当前这一次open的目的是写入数据。所以, 只能写, 不能读。
  3. a 追加模式. 含义是, 当前这一次open的目的是向后追加。所以, 只能写, 不能读。
  4. b 字节模式. 可以和上面三种模式进行混合搭配. 目的是。写入的内容或读取的内容是字节。

encoding: 文件编码。一般使用utf-8 或者gbk。

另一种写法:

with open(文件名, mode=模式, encoding=编码) as f:pass

这种写法的好处是, 不需要我们手动去关闭f

读取一个文本文件:

with open("躺尸一摆手.txt", mode="r", encoding="utf-8") as f:for line in f:  # for循环可以逐行的进行循环文件中的内容print(line)

7. 关于函数

在代码量很少的时候, 我们并不需要函数. 但是一旦代码量大了. 一次写个几百行代码. 调试起来就很困难. 此时, 建议把程序改写成一个一个具有特定功能的函数. 方便调试. 也方便代码的重用。

def 函数名(形式参数):# 函数体return 返回值

上面是编写一个函数的固定逻辑. 但是, 编写好的函数是不会自己运行的. 必须有人调用才可以

函数名(实际参数)

写一个试试:

def get_page_source(url):print("我要发送请求了. 我要获取到页面源代码啊")return "页面源代码"pg_one = get_page_source("baidu.com")
pg_two = get_page_source("koukou.com")

再来一个

def download_image(url, save_path):print(f"我要下载图片{url}了", f"保存在{save_path}")donwload_image("http://www.baidu.com/abc/huyifei.jpg", "胡二飞.jpg")
donwload_image("http://www.baidu.com/aaa/dagedagefeifeifei.jpg", "大哥大哥飞飞飞.jpg")

总结, 函数的好处就是, 以后需要该功能. 不用再写重复代码了.

8. 关于模块

模块是啥? 模块就是已经有人帮我们写好了的一些代码, 这些代码被保存在一个py文件或者一个文件夹里. 我们可以拿来直接用

在python中有三种模块.

第一种, python内置模块

​ 不用安装. 直接导入就能用

第二种, 第三方模块

​ 需要安装. 安装后. 导入就可以用了

第三种, 自定义模块(新手先别自己定义模块)

​ 直接导入就能用

导入模块的语法

import 模块
from 模块 import 功能
from 模块.子模块 import 功能举例子,
import os
import sys
from urllib.parse import urljoin
from bs4 import BeautifulSoup

搞爬虫.必须要了解的一些python内置模块。

8.1. time模块

import time
time.time()  # 这个是获取到时间戳
time.sleep(999)  # 让程序暂停999秒

8.2. os模块

import os
# 判断文件是否存在
os.path.exists()  #  判断文件或者文件夹是否存在
os.path.join()    # 路径拼接
os.makedirs()     # 创建文件夹

8.3. json模块(重中之重)

现在的网站不同于从前了. 习惯性用json来传递数据. 所以, 我们必须要知道json是啥, 以及python如何处理json.

json是一种类似字典一样的东西. 对于python而言, json是字符串.

例如,

s = '{"name": "jay", "age": 18}'

你看. 这破玩意就是json

如何来转化它.

json字符串 => python字典

import json
s = '{"name": "jay", "age": 18}'
dic = json.loads(s)
print(type(dic))

python字典 => json字符串

import json
dic = {"name": "jay", "age": 18}
s = json.dumps(dic)
print(type(s))

8.4. random模块

随机. 没别的用处.生成随机数

import random
i = random.randint(1, 10)  # 1~10的随机数
print(i)   # 多跑两次.效果更加

8.5. 异常处理

这个是重点. 我们在写爬虫的时候. 非常容易遇到问题. 但这些问题本身并不是我们程序的问题.。

try: # 尝试...print("假如, 我是一段爬虫代码, 请求到对方服务器")print("我得出事儿啊")print(1/0)  # 出事儿了
except Exception as e:  # 出错了. 我给你兜着print(e)  # 怎么兜?  打印一下. 就过去了print("不论上面是否出错. 我这里, 依然可以执行")

看懂了么? 程序执行的时候. 如果try中的代码出现错误. 则自动跳到except中. 并执行except中的代码. 然后程序正常的, 继续执行

有了这玩意. 我们就可以写出一段很漂亮的代码逻辑:

while 1:try:我要发送请求了. 我要干美国CIA的总部. 我要上天print("我成功了!!")break  # 成功了.就跳出循环except Exception as e:print("失败了")print("我不怕失败")print("再来")

改良版:

import time
for i in range(10):try:我要发送请求了. 我要干美国CIA的总部. 我要上天print("我成功了!!")break  # 成功了.就跳出循环except Exception as e:print("失败了")print("我不怕失败")print("再来")time.sleep(i * 10)

在写代码测试阶段. 不要加try…except… 要不然. 出错了. 你都不知道. 啥错了, 错哪儿了.

爬虫基础-----1.python基础相关推荐

  1. 二十一. Python基础(21)--Python基础(21)

    二十一. Python基础(21)--Python基础(21) 1 ● 类的命名空间 #对于类的静态属性:     #类.属性: 调用的就是类中的属性     #对象.属性: 先从自己的内存空间里找名 ...

  2. python语言的单行注释以井号开头_推荐|零基础学习Python基础知识

    原标题:推荐|零基础学习Python基础知识 Python是一种面向对象.解释型计算机程序设计语言.语法简洁清晰,强制用空白符作为语句缩进. Python具有丰富和强大的库,又被称为胶水语言.能把其他 ...

  3. day1 计算机基础以及python基础

    day1 计算机基础以及python基础 1.cpu 内存 硬盘 操作系统 cpu:计算机的运算和计算中心,相当于人类的大脑 内存:暂时存储数据,临时加载数据应用程序.一般有4G.8G.16G.32G ...

  4. 爬虫学习笔记-python基础+urllib

    目录 一.Python基础知识回顾 1.pip下载源 2.pycharm设置作者信息 3.python注释 4.变量 4.1 类型转换 4.2 字符串函数 find函数 startswith和ends ...

  5. python语法基础学习-Python基础语法精心总结!看完都知道的可以往下继续学习了...

    原标题:Python基础语法精心总结!看完都知道的可以往下继续学习了 这应该是最详细的Python入门基础语法总结! 定义变量,使用变量 1. input 用户自己输入值 2. print 打印值 可 ...

  6. python基础代码-python基础,python基础代码大全

    Python是现在非常流行的编程语百言,也是四大编程语言之一,而且Python具有简单.易学.上手容易.功能强大等优势,非度常适合零基础人员学习,也是问初学者的首要选择. 而对于初学Python入门时 ...

  7. python基础指令-python基础语法,python 代码命令大全

    python: 1.语法强制缩进 2.区分大小写:iLoop与iloop是两个变量 3.变量无需申明,但是变量赋值前无法使用:a=3合法,b=a+3合法,b=a+c不合法,因为c未赋值前不能使用 4. ...

  8. python常用代码大全-python基础,python基础代码大全

    Python是现在非常流行的编程语百言,也是四大编程语言之一,而且Python具有简单.易学.上手容易.功能强大等优势,非度常适合零基础人员学习,也是问初学者的首要选择. 而对于初学Python入门时 ...

  9. 【数据分析师-python基础】python基础语法精讲

    python基础语法精讲 1 从数字开始 1.1 理解整数.浮点数.复数几种类型对象 1.2 掌握运算及其相关的常用函数 2 变量.表达式和语句 2.1 变量作用及定义的方法 2.2 变量命名原则和习 ...

最新文章

  1. pcss评分_GTA5画质设置 N卡画质选项设置指南
  2. RabbitMQ五种模式
  3. 根据坐标如何标记图片_推荐收藏 | 一文搞定SCI论文图片
  4. 掉电引起的ORA-1172错误解决过程(二)
  5. SAP UI5 应用开发教程之三十三 - SAP UI5 应用的响应式布局特性(Responsiveness)试读版
  6. Hello JavaFX 2.0:命令行介绍
  7. MyBatis学习笔记(三) 关联关系
  8. Docker监控:基于阿里云容器服务构建自己的Docker监控框架
  9. 125条常见的java面试笔试题大汇总3
  10. java面试第十七天
  11. CSS的50个代码片段
  12. 爬虫:Python爬虫学习笔记之网页解析基础——爬取360导航栏目
  13. AjaxControltoolkit学习笔记—ListSearch 使用详解
  14. python人名最多数统计_《利用Python进行数据分析》-全美婴儿姓名案例
  15. Oracle书籍推荐
  16. 运算放大器(运放)选型、参数分析以及应用OPA2350
  17. 如何提高工作效率,提高工作效率的方法?
  18. 批处理程序文件夹加密
  19. ESP32 LVGL8.1 ——event 事件 (event 17)
  20. Smart Git Assume Unchanged

热门文章

  1. 在线sql进行Excel表格拆分
  2. 【时光隧道——使用Html、JavaScript等实现(附源代码)】
  3. MATLAB编写用户登陆界面小结——更改界面左上角图标、输入用户名提醒和输入密码隐藏
  4. 程序员的一天:一寸光阴一寸金
  5. 计算机专业学什么代码,计算机科学与技术专业代码,本科计算机科学与技术专业代码查询...
  6. Android拍摄raw照片,这20款摄影APP,让你的照片飞上天!
  7. echarts动态渲染柱状图背景颜色以及顶部数值
  8. mysql 设置所有ip均可访问(windows版本设置)
  9. 金蝶EAS DEP脚本(1)—— 基本概念
  10. 苹果M3处理器跑分曝光 Max性能提升24%