Python爬虫基础语法相关

1. if条件判断

if 条件:
        # 事情1
    else:
        # 事情2

2. while循环

while 条件:
        循环体

3. 关于True和False

# 几乎所有能表示为空的东西. 都可以认为是False
    print(bool(0))
    print(bool(""))
    print(bool([]))
    print(bool({}))
    print(bool(set()))
    print(bool(tuple()))
    print(bool(None))

4. 字符串

A. 索引和切片

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

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

B. strip()

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

     s = "    \t\t\t 是的士大夫为我\r\r      \n\n  "  # 够乱的字符串s1 = s.strip()print(s1)  # 是的士大夫为我

C. split()

做切割的

     s = "10,男人本色,100000万"  # 你在网页上提取到这样的一段数据. 现在我需要电影名称tmps = s.split(",")name = tmps[1]print(name)  # 男人本色id, name, money = s.split(",")  # 切割后. 把三个结果直接怼给三个变量print(id)print(name)print(money)

D. replace()

replace, 字符串替换

s = "的      \t\t\n\n属地往   32        师弟    "
s1 = replace(" ", "").replace("\t", "").replace("\n", "")

E. 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)  # 周杰伦不认识我

F. f-string

     s = "周杰伦"s1 = f"我喜欢{s}"  #  它会把一个变量塞入一个字符串print(s1)  # 我喜欢周杰伦k = 10085s2 = f"我的电话号是{k+1}" # 它会把计算结果赛入一个字符串print(s2)  # 我的电话号是10086# 综上, f-string的大括号里, 其实是一段表达式.能计算出结果即可

5. 列表

A. 索引, 切片

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

   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

B. 增加

给列表添加数据.

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

C. 删除

lst.remove("周润发")

D. 修改

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

E.range和查询

   for i in range(len(lst)):print(lst[i])# 循环列表的内容for item in lst:print(item)

6. 字典

A. 增加/修改/删除

   dic = {}dic['name'] = '樵夫'dic['age'] = 18print(dic)  # {"name": "樵夫", "age": 18}dic = {"name": "樵夫", "age": 18}dic['age'] = 19print(dic)  # {"name": "樵夫", "age": 19}dic = {"name": "樵夫", "age": 18}dic.pop("age")print(dic)  # {'name': '樵夫'}

B. 查询

   dic = {"name": "樵夫", "age": 18}a = dic['name']  # 查询'name'的值print(a)  # 樵夫b = dic['age']  # 拿到dic中age对应的值print(b)  # 18c = dic['哈拉少']   # 没有哈拉少. 报错d = dic.get("哈拉少")  # 没有哈拉少, 不报错. 返回None. 它好. 它不报错嵌套!!dic = {"name": "樵夫", "age": 18}for k in dic:  # 循环出所有的keyprint(k)  print(dic[k])  # 获取到所有的value并打印dic = {"name": "王峰","age": 18,"wife": {"name": "章子怡","age": 19,},"children": [{'name':"胡一菲", "age": 19},{'name':"胡二菲", "age": 18},{'name':"胡三菲", "age": 17},]}# 王峰的第二个孩子的名字print(dic['children'][1]['name'])# 王峰所有孩子的名称和年龄for item in dic['children']:print(item['name'])print(item['age'])

7.字符集和bytes

字符集, 记住两个字符集就够了. 一个是utf-8, 一个是gbk. 都是支持中文的. 但是utf-8的编码数量远大于gbk. 我们平时使用的最多的是utf-8

# 把字符串转化成字节
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)

记住, bytes不是给人看的. 是给机器看的. 我们遇到的所有文字, 图片, 音频, 视频. 所有所有的东西到了计算机里都是字节.

8. 文件操作

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: 文件编码. 只有处理的文件是文本的时候才能使用. 并且mode不可以是`b`.   99%的时候我们用的是`utf-8

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

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

9. 关于函数

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")

10. 关于模块

第一种, python内置模块

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

第二种, 第三方模块

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

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

​    直接导入就能用

导入模块的语法

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

A. time 模块

B. os模块

C. json模块

D. random模块

   import timetime.time()  # 这个是获取到时间戳time.sleep(999)  # 让程序暂停999秒import os# 判断文件是否存在os.path.exists()  #  判断文件或者文件夹是否存在os.path.join()    # 路径拼接os.makedirs()     # 创建文件夹import jsons = '{"name": "jay", "age": 18}'dic = json.loads(s) #json字符串 => python字典print(type(dic))import jsondic = {"name": "jay", "age": 18}s = json.dumps(dic) #python字典 => json字符串print(type(s))import randomi = random.randint(1, 10)  # 1~10的随机数print(i)   # 多跑两次.效果更加

E. 异常处理

比如, 你在抓取某网站的时候. 由于网络波动或者他服务器本身压力太大. 导致本次请求失败. 这种现象太常见了. 此时, 我们程序这边就会崩溃. 打印一堆红色的文字. 让你难受的一P.  怎么办?

我们要清楚一个事情. 我们平时在打开一个网址的时候. 如果长时间没有反应, 或者加载很慢的时候. 我们习惯性的会刷新网页. 对吧. 这个逻辑就像: `程序如果本次请求失败了. 能不能重新来一次`. OK, 我们接下来聊的这个异常处理. 就是干这个事儿的.

   try: # 尝试...print("假如, 我是一段爬虫代码, 请求到对方服务器")print("我得出事儿啊")print(1/0)  # 出事儿了except Exception as e:  # 出错了. 我给你兜着print(e)  # 怎么兜?  打印一下. 就过去了print("不论上面是否出错. 我这里, 依然可以执行")while 1:try:我要发送请求了. 我要干美国CIA的总部. 我要上天print("我成功了!!")break  # 成功了.就跳出循环except Exception as e:print("失败了")print("我不怕失败")print("再来")import timefor i in range(10):try:我要发送请求了. 我要干美国CIA的总部. 我要上天print("我成功了!!")break  # 成功了.就跳出循环except Exception as e:print("失败了")print("我不怕失败")print("再来")time.sleep(i * 10)

Python爬虫必备知识点--整理核心基础相关推荐

  1. python 类的知识点整理_Python基础知识点整理,看下你能答对几个

    python高薪就业(视频.学习路线.免费获取)​shimo.im 1.单行注释和多行注释 1. 单行注释 #. 2. 多行注释,前后三个单引号或双引号'''... '''; "" ...

  2. Python学习-爬虫入门知识点整理

    1 通讯协议 1.1 端口 进行数据通讯的步骤: (1)找到对方IP (2)数据要发送到对方指定的应用程序上.为了标识这些应用程序,所以给这些网络应用程序都用数字进行了标识,这个数字就叫端口,这里的端 ...

  3. Python自动化办公知识点整理汇总

    知乎上有人提问:用python进行办公自动化都需要学习什么知识呢? 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案例的人 ...

  4. python自动化办公知识点整理汇总_Python自动化办公知识点整理汇总

    知乎上有人提问:用python进行办公自动化都需要学习什么知识呢? ​ 这可能是很多非IT职场人士面临的困惑,想把python用到工作中,却不知如何下手?python在自动化办公领域越来越受欢迎,批量 ...

  5. python爬虫之爬取网页基础知识及环境配置概括

    记:python爬虫是爬取网页数据.统计数据必备的知识体系,当我们想统计某个网页的部分数据时,就需要python爬虫进行网络数据的爬取,英文翻译为 spider 爬虫的核心 1.爬取网页:爬取整个网页 ...

  6. 计算机视觉-计算机视觉知识点整理1基础篇

    一.基础知识 1.1 BatchNorm/LayerNorm/InstanceNorm/GroupNorm 基础知识点 记忆点 备注 Batch Norm 达到的效果 BatchNorm就是在深度神经 ...

  7. python爬虫scrapy安装_零基础写python爬虫之爬虫框架Scrapy安装配置

    前面十章爬虫笔记陆陆续续记录了一些简单的Python爬虫知识, 用来解决简单的贴吧下载,绩点运算自然不在话下. 不过要想批量下载大量的内容,比如知乎的所有的问答,那便显得游刃不有余了点. 于是乎,爬虫 ...

  8. python爬虫百度地图_零基础掌握百度地图兴趣点获取POI爬虫(python语言爬取)(基础篇)...

    实现目的:爬取昆明市范围内的全部中学数据,包括名称.坐标. 先进入基础篇,本篇主要讲原理方面,并实现步骤分解,为python代码编写打基础. 因为是0基础开始,所以讲得会比较详细. 如实现目的所讲,爬 ...

  9. 零基础学习python爬虫_教你零基础如何入门Python爬虫!

    Python爬虫好学吗?看你怎么学了.如果是自学,会难一些,毕竟有难题很难找到人帮你解答,很容易半途而废.要是你找到了一家靠谱的学校,就会容易很多.不过,这里我想教你入门Python爬虫. 一:爬虫准 ...

最新文章

  1. docker 部署 redis
  2. 【实验】配置DHCP和NAT访问Internet公网案例
  3. poj 2078(搜索+剪枝)
  4. j2ee之存储过程调用
  5. Android UmengShareSDK第三方登录
  6. Angular自学笔记(?)TemplateRef和ViewContainerRef
  7. spring中的IOC和AOP
  8. C语言二叉树实验报告流程图,二叉树的建立与遍历实验报告(c语言编写,附源代码).doc...
  9. Linux CentOS 查看服务器信息命令及其它常用命令
  10. 图解TCPIP-MIME
  11. DPDK QOS1 -- Linux HQOS的框架
  12. 下载sqlserver2012 试用_大肥虫助手下载-大肥虫助手 安卓版v7.0.4
  13. swf -fla -swf
  14. 摩尔定律还会一直生效吗?
  15. “新政”不断的智慧城市,如何安全迎接新变革?
  16. 神经网络发展的三个阶段,人工神经网络的发展
  17. Python下十进制转换为二进制
  18. Unity-Timeline制作动画(快来制作属于你的动画吧)
  19. Win10下安装Ubuntu双系统Ubuntu分区
  20. 城堡、游乐园、地下城!!!500+ 超棒 FBX 模型素材,全部都免费!

热门文章

  1. 自相关法基音提取的matlab程序,自相关函数法基音检测matlab程序
  2. 互联网从业必备-历史最全互联网黑话词汇表分享
  3. IOS多国语言Localize方法
  4. 改善用户体念:jsp+Ajax实现实时上传,删除,导入Excel进度条
  5. 【信奥题库 NOIP 2020 在线模拟赛 T4】三元组
  6. tomcat版本和支持的jdk版本匹配表
  7. 无人机编程donekit及通讯(一)
  8. 魔方复原(BFS+剪枝)
  9. 应用Excel实现大小写金额转换
  10. markdown排版常用