自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 spider_review

spider_review1.example01import requestssession = requests.Session()session.verify = Falsesession.headers.update({ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'

2021-08-23 20:54:29 151

原创 day8-爬虫实战

day8-爬虫实战1.多线程多线程总结import timedef func1(num): time.sleep(3) print(f'子线程任务{num}') # 方案一:直接使用多线程 - 用于需要同时执行的任务个数确定并且量小(比如,一两个任务)from threading import Thread# 1. 直接使用Thread# t = Thread(target=func1, args=(1,))# t.start()# # join中的time

2021-08-20 20:51:52 190

原创 day7-线程池和多进程

day7-线程池和多进程1.线程队列queue 模块中的队列,只能保存一般数据或者多线程中产生的数据(多用于多线程,自带线程安全属性),但是不能用来储存多进程中产生的数据队列数据结构: 是容器,先进先出(1) 队列基本用法from queue import Queueif __name__ == '__main__':# 1) 创建队列对象: Queue() q = Queue() # 2) 添加数据(进): 队列对象.put(数据) q.put(100)

2021-08-18 20:48:42 184

原创 day6-多线程和多进程

day6-多线程和多进程1.多线程程序默认都是单线程(这个默认线程又叫主线程,其他的线程都叫子线程)Thread类的对象就是线程对象,程序需要多少个子线程,就要创建多少个Thread的对象import timefrom datetime import datetimefrom threading import Thread, current_threaddef download(name): print(f'{name}开始下载:{datatime.now()}') pr

2021-08-17 20:28:17 132

原创 day5-xpath和多线程

day5-xpath和多线程1.xpath 和 xml 数据格式(1) 专业术语树: 整个 html 或 xml 结构节点: html 中的每个标签,xml 中标签就是节点根节点: 树的第一个节点,html 的根节点就是 html 标签属性: 节点属性 (html 中就是标签属性)(2) xml 数据格式json 数据和 xml 数据是两种通用的数据格式,用于不同语言之间进行数据交流将一个超市的商品数据进行传输:json:{ "name": "永辉超市", "a

2021-08-16 20:47:19 106

原创 day4 - selenium 和 xpath 解析

day4 - selenium 和 xpath 解析1.51 job 分析from selenium.webdriver import Chromefrom bs4 import BeautifulSoupimport csvfrom selenium.webdriver.common.keys import Keysimport reimport time, jsonf = open('files/数据分析.csv', 'a', encoding='utf-8')writer = cs

2021-08-14 09:48:47 187

原创 day3-代理和selenium

day3-代理和selenium1.代理 ip 的使用(1) 获取蘑菇代理中的代理 IPimport requestsdef get_ip(): response = requests.get('http://piping.mogumiao.com/proxy/api/get_ip_bs?appKey=775206edf3dc4329ba04568b75a66a30&count=4&expiryDate=0&format=2&newLine=3')

2021-08-12 19:20:33 80

原创 day2-requests 和 bs4

day2-requests 和 bs41.requests的使用方法# requests:Python基于http协议进行网络请求的第三方库import requests(1) 发送请求requests.get(url,*,headers,params,proxies) - 发送get请求requests.post(url,*,headers) - 发送 post 请求参数url - 请求地址(一个网站的网址、接口的地址、图片地址等)

2021-08-11 20:46:36 420

原创 day1-前端基础

day1-前端基础index(1) 网页的技术结构:HTML、CSS、JS(javascript)HTML(结构标准) - 提供网页内容(通过不同的标签提供不同的内容)CSS(样式标准) - 负责网页内容的样式布局JS(行为标准) - 负责控制网页内容变化(2) HTML - 超文本标记语法一个网页就是一个html,html代码一般写在可以被浏览器直接解析的html文件中html基本结构:一个html标签里面

2021-08-10 20:49:32 80

原创 day20-自动化办公2

day20-自动化办公21.excel 文件的读操作import openpyxl(1) 加载文件(只能加载后缀是.xlsx文件)wb = openpyxl.load_workbook('files/学生信息.xlsx')(2) 从工作簿中获取工作表相关信息获取所有工作表的表名names = wb.sheetnamesprint(names)获取活跃表sheet1 = wb.activeprint(sheet1)跟据表名获取指定表工作表对象[表名] -

2021-08-06 20:54:09 67

原创 day19-邮件自动发送基本流程

day19-邮件自动发送基本流程1.邮件自动发送基本流程(1) smtplib - 登陆邮箱,发送邮件import smtplibfrom email.mime.multipart import MIMEMultipartfrom email.header import Headerfrom email.mime.text import MIMEText# 第一步:登陆邮箱# 1. 连接邮箱服务器# smtplib.SWTP_SSL(服务器地址,邮箱服务

2021-08-05 20:55:21 521

原创 day18-面向对象进阶

day18-面向对象进阶1.对象属性的增删改查(1) 查 - 获取属性值对象.属性 - 获取对象指定属性的值,如果属性不存在会报错getattr(对象,属性名) - 获取对象指定属性的值,如果属性不存在会报错getattr(对象,属性名,默认值) - 获取对象指定属性的值,如果属性不存在返回默认值print(stu1.name)print(getattr(stu1, 'name'))print(getattr(stu1,

2021-08-04 20:38:04 63

原创 day17-面向对象基础

day17-面向对象基础1.编程思想1.编程思想:面向过程编程、函数式编程、面向对象编程面向过程编程s = 1for x in range(1, 11): s *= xprint(s)函数式编程from math import factorialprint(factorial(10))print(factorial(5))面向对象编程class Math: @staticmethod def factorial(num: int):

2021-08-03 20:56:00 96

原创 day16-正则表达式

day16-正则表达式1.匹配符号(1) re模块1.re 模块是python提供的专门用来支持正则表达式的一个模块fullmatch函数:fullmatch (正则表达式,字符串) - 让正则表达式和指定字符进行完全匹配,如果匹配失败返回None2.正则语法正则表达式 - 正则表达式是一个让字符串复杂问题变得简单的工具写正则表达式的主要工作: 用正则符号描述清楚相关字符串的规则python 正则表达方式: r’正则表达式’js 的正则: /正则表达式/fro

2021-08-03 20:54:43 381

原创 day15-json和异常

day15-json和异常1.文件补充操作文件补充操作:如果以读的方式打开不存在的文件会报错​ :如果以写的方式打开不存在的文件不会报错(1)打开不存在的文件# open('test.txt', 'r) # FileNotFoundError: [Errno 2] No such file or directory: 'test.txt'open('test.txt', 'w')f = open('test.txt', 'r+')(2)读写模式使用方式:

2021-08-02 10:14:14 55

原创 day14-常用系统模块和文件操作

day14-常用系统模块和文件操作1.time模块(1)时间戳import time用指定时间到1970年1月1日0时0分0秒(格林威治时间)的时间差(单位是秒)来表示时间的方式就是时间戳注:格林威治时间和北京时间有八个小时的时差4个字节(时间戳存储时间)16个字节(用字符串存储时间)time.time() - 获取当前时间print(time.time()) # 1627611728.5696352:time.locatime(

2021-07-30 20:51:59 71

原创 day13-迭代器生成器和模块

day13-迭代器生成器和模块1.迭代器(1)什么是迭代器(iter)迭代器是容器型数据类型,可以同时保存多个数据;可以被遍历;也可以转换成列表和元组打印迭代器的时候无法打印里面的元素;;迭代器不支持len操作如果需要迭代器中的元素,必须将元素从迭代器中取出,而且一旦取出元素,这个元素在迭代器中就不存在了(2)怎么创建迭代器方式一:通过 iter将其他序列转换成迭代器方式二:创建生成器对象(生成器可以看成一种特殊的迭代器)iter1 = iter('abc')print(iter

2021-07-29 20:40:23 87

原创 day12-函数进阶

day12-函数进阶1.匿名函数(1)匿名函数语法:函数名 = lambda 参数列表:返回值相当于:def 函数名(参数列表)​ return 返回值注意:匿名函数只能实现用一句代码就可以完成功能的函数​ 匿名函数在调用的时候和普通函数没有区别​ 匿名函数的参数不能使用冒号语法来说明类型sum1 = lambda num1, num2=10: num1 + num2print(sum1(10, 20))print(sum1(num1=10

2021-07-28 20:57:13 127

原创 day11-函数基础

day11-函数基础1.定义函数(1)认识函数什么是函数:函数就是把实现某一功能的所有代码打包成了一个包,每次需要这个功能的时候不用在重复这个功能的代码了,而是使用函数函数的分类(按照函数是由谁创建/定义来进行的分类)系统函数:由python定义的函数,这类函数只需要在需要它的功能的时候去调用它;例如:print、input、type、id、max、min、sum等自定义函数:由程序员自己创建的函数(2)定义(创建)函数语法:def 函数名(形参列表):​ 函数说明文档​ 函数

2021-07-27 20:51:20 346

原创 day10-字符串格式化

day10-字符串格式化1.字符串格式化1.字符串格式占位符语法包含格式占位符的字符串%(数据1,数据2,数据3,…)注意:数据和格式站位一一对应格式占位符%s - 字符串占位符;可以给任何类型的数据占位%d - 整数占位符;只能给数字占位,如果是浮点数拼接的时候小数位会被去掉%f - 浮点数占位符;只能给数字占位,默认保留6位小数%Nf - 浮点数占位符;只能给数字占位,保留N位小数name = '小明'age = 18gender = .

2021-07-26 10:48:08 92

原创 day6-列表

day6-列表(1)列表切片1. 切片 - 获取部分元素切片的结果是列表语法:列表[开始下标:结束下标:步长]说明:开始下标 - 下标值(0开始的和-1开始的都行);确定优先切片范围的起点,可以取到: - 固定写法结束下标 - 下标值(0开始的和-1开始的都行);确定切片有效范围的终点,取不到步长 - 1)决定切片的方向(步长对应的方向必须和开始到结束的方向一致,否则切片结果为空)2)决定获取元素的方式(一个一个的取

2021-07-23 19:12:23 56

原创 day9-字符串

day9-字符串1.字符串和字符1.什么是字符串(str)容器型数据类型;将’‘或者""或者’’’’’‘或者""""""作为容器标志,引号中每个符号就是字符串的元素。(’’’’’'和""""""在表示字符串内容的时候换行可以不使用转义字符,而是直接按回车)字符串不可变(不支持增删改);字符串有序(支持下标操作)元素:引号中的单独的每个符号都是字符串的元素(又叫字符),字符可以是任何符号。字符分为两类:普通字符(表示符号本身字符)、转义字符(符号的存在具有特殊的功能和意义)print(st

2021-07-23 15:47:04 53

原创 day8-字典和集合

day8-字典和集合1.字典的增删改1.增和改字典[键] = 值 - 当键存在的时候是修改键对应的值:当键不存在的时候添加键值对字典. setdefault(键,值) - 添加键值对(当键存在的时候不会修改原来的值)cat = {'name':'弟弟', 'age':2, 'color':'哥哥'}# 添加cat['breed'] = '蓝猫'print(cat) # {'name': '弟弟', 'age': 2, 'color': '白色', 'breed': '

2021-07-21 20:52:26 44

原创 day7-元组和字典

day7-元组和字典01.相关函数1.max、min - 求最大值、最小值max(序列)nums = [34, 89, 78, 56, 90, 23]print(max(nums), min(nums))2.sum - 求数字序列中的和sumprint(sum(nums))3.sorted - 排序;不修改原序列中元素的顺序而是产生一个新的列表sorted (序列);sorted(序列, reverse=True)nums = [34, 89,

2021-07-21 16:11:50 331

原创 day5-循环练习和列表

day5-循环练习和列表01.循环嵌套(1) 循环嵌套的执行原则:外循环一次,内循环完整for x in range(5): for y in range(2, 5): print(x,y)x的取值范围: 0, 1, 2, 3, 4第一次 x = 0: 执行循环体对应的for循环, y取值范围是:2, 3, 4第一次 y=2: print(x, y) -> print(0, 2)第一次 y=3: print(x, y) -> print(0, 3)第

2021-07-18 20:26:17 74

原创 day4-循环

day4-循环01.for循环(1)循环 - 让代码重复执行(代码写一遍,运行的时候可以执行多次)语法:for 变量 in 序列:循环体说明:for、in - 关键字,固定写法变量 - 写一个变量名。(可以是已经定义过的,也可以是没有定义过的)序列 - 容器型数据类型对应的数据,常见序列:字符串、列表、元组、字典、集合、迭代器、生成器、range。: - 固定写法循环体 - 和for保持一个缩进的一条或者多条语句;就是需要重复执行的代码。执

2021-07-16 17:59:02 106

原创 day3-运算符和分支总结

day3-运算符和分支总结01.数字运算符数学运算符: +(加)、 -(减)、 *(乘)、 /(除)、 %(求余数、取模)、//(整除)、**(幂运算)1. +、-、*、/ 和数学中的+、-、×、÷的功能一模一样print(5 + 2)print(5 - 2)print(5 * 2)print(5 / 2)2.% - 求余数、取模print(5 % 2)print(16 % 2)3.// y - 整除print(5 // 2) # 2; 2 2.5 3print(1.8

2021-07-15 17:15:58 144

原创 day2-基础语法和变量总结

day2-基础语法和变量总结01pycharmprint('hello world!')02基础语法1.常用快捷键ctr + / - 添加/取消注释ctr + s - 保存ctr + c -复制、拷贝ctr + v - 粘贴ctr + x - 剪切ctr + a - 全选ctr + z - 撤销ctr +shift + z / ctr+ y - 反撤销alt + 鼠标点击 - 多行光标2.注释:注释就是代码中不会被编译执行(不会被解释器解释)的部分。注释的存在不会影响程序的功

2021-07-13 20:34:05 88

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除