python
文章平均质量分 70
Rorschach379
python,数据分析
展开
-
第八天 线程池和进程池
from queue import Queue as T_Queue # 线程队列from multiprocessing import Process, Queue as P_Queue # 进程队列1. 线程间通信同一个进程中的多个线程,数据可以直接共享数据收集:定义全局容器,常用的容器 - 线程队列 (定义全局队列直接使用)添加数据: 队列.put(数据)获取数据: 队列.get() 、 队列.get(timeout=时间)2. 进程间通信只能通过进程队列来进行数据交流原创 2022-01-19 21:15:27 · 290 阅读 · 0 评论 -
第七天 线程安全和队列
1. 进程和线程进程:一个正则运行的应用程序就是一个进程;每一个进程会运行在其专用且受保护的内存空间中。线程:线程是执行任务的基本单位每一个进程至少要有一个线程(默认只有一个)单线程串行:如果要在一个线程中执行多个任务,任务是按顺序一个一个的执行进程 - 车间; 线程 - 工人2. 多线程多线程:在一个进程中创建多个线程;执行在多个线程中的任务,可以并发(同时)执行多线程原理:利用cpu空闲时间干活使用多线程方法一:直接创建Thread类的对象线程对象 = Thread(target=原创 2022-01-18 21:04:35 · 202 阅读 · 0 评论 -
第六天 多线程和多进程
爬虫复习第一步:获取网页数据流程:确定目标网站 -> 确定技术(直接requests发送(加user-agent、加cookie)、找数据接口、使用selenium)反爬:浏览器身份验证反爬(加user-agent)、登录反爬(requests的headers中添加cookie、selenium加cookie)、封IP反爬第二步:解析数据正则bs4(基于css选择器的解析器)lxml(基于xpath的解析器)第三步:保存数据csv、excel1.多线程1)主线程一个进程默认原创 2022-01-17 21:22:38 · 415 阅读 · 0 评论 -
第五天 xml和xpath的用法
复习# 1. 字体反爬# 字体文件格式: woff、woff2# 在线预览:https://kekee000.github.io/fonteditor/# int('4e00', base=16)# 2. 登录反爬# 1)requests登录反爬: headers中添加'cookie'对应的键值# 2)selenium登录反爬:# a.获取cookie值保存到本地: b.get_cookies()# b.使用cookie: 打开网页 -> 添加cookie -> 重新打开原创 2022-01-15 15:45:21 · 260 阅读 · 0 评论 -
第四天 常见反爬
登录反爬操作from selenium.webdriver import Chrome, ChromeOptionsfrom selenium.webdriver.common.keys import Keys# 1. 控制浏览器进入登录页面options = ChromeOptions()options.add_experimental_option('excludeSwitches', ['enable-automation'])b = Chrome(options=options)b.原创 2022-01-13 21:20:41 · 428 阅读 · 0 评论 -
第三天 selenium的使用
from selenium.webdriver import Chromefrom bs4 import BeautifulSoup# 1. 创建浏览器对象b = Chrome()# 2. 在浏览器中输入网址b.get('https://movie.douban.com/top250')# 3. 获取网页内容(当前浏览器显示的是哪个页面,获取就是那个页面的内容)# print(b.page_source)soup = BeautifulSoup(b.page_source, 'lxml'原创 2022-01-12 21:22:26 · 214 阅读 · 0 评论 -
第二天 详情页和json接口
# 2.requests# 请求、get/post、响应headers = { 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'}response = requests.get('https://book.douban.com/', headers=headers)原创 2022-01-11 21:47:14 · 208 阅读 · 0 评论 -
第一天 学习requests
爬虫:用程序去获取网页上的数据爬虫过程:1) 获取网页数据(requests、selenium)、 2)解析数据(正则表达式-re、css选择器-bs4、xpath-lxml)3) 保存数据(数据库、csv文件、excel文件)反反爬:user-agent(身份伪装,将爬虫程序伪装成浏览器)、登录反爬(设置cookie)、字体反爬1. 获取网页数据requests.get(网页地址) - 获取网页数据,返回一个响应对象参数headers: 请求头,需要一个字典,这个字典有两个常见的键值对原创 2022-01-10 17:41:14 · 421 阅读 · 0 评论 -
第二十二天 Word文件操作
# 注意:使用docx之前需要先安装第三方库:python-docxfrom docx import Document# 导入数值计量单位:Inches- 英尺、Cm - 厘米、Pt - 像素from docx.shared import Inches, Cm, Pt1. 创建空文档doc = Document()2. 添加内容1)文档对象.add_heading(text=’’, level=1) - 添加指定级别的标题,并且返回标题对象# text - 标题内容# level -原创 2021-12-28 20:11:58 · 486 阅读 · 0 评论 -
第二十一天 CSV和PDF文件操作
import csv1. 创建reader1) csv.reader(文件对象) - 获取指定csv文件中的内容,返回一些迭代器,迭代器中的元素是每一行数据对应一个列表2) csv.DictReader(文件对象) - 获取指定csv文件中的内容,返回一些迭代器,迭代器中的元素是每一行数据对应一个字典reader1 = csv.reader(open('files/北京高档酒店价格分析.csv'))reader2 = csv.DictReader(open('files/北京高档酒店价格原创 2021-12-27 21:21:36 · 218 阅读 · 0 评论 -
第二十天 自动化办公
1. 匹配类符号普通符号 - 字符中在正则里面表示字符本身的符号、\n、\t、\u4e00. - 匹配任意一个字符(多行匹配 - 不能和\n匹配;单行匹配(?s) - 可以和\n匹配)\d、\D、\s、\S、\w、\W[字符集]、[^字符集]2. 控制次数*、+、?、{N}、{M,N}、{M,}、{,N}*、+、?、{M,N}、{M,}、{,N} - 贪婪*?、+?、??、{M,N}?、{M,}?、{,N}? - 非贪婪3. 分组和分支分组 - ()分支 - |4.转原创 2021-12-25 18:04:55 · 431 阅读 · 0 评论 -
第十七天 json相关、面向对象
1.json数据格式的作用json和xml是两种通用的数据格式,几乎所有的高级编程语言都支持。json和xml数据的格式的存在,是为了让不同编程语言的程序可以进行有效的数据沟通2. json数据格式json数据格式的要求:1)一个json有且只有一个数据 2)唯一的这个数据必须是json支持的数据类型的数据json支持的数据类型:数字 - 表示的时候直接写,并且支持科学计数法,例如:23、3.89、3e4字符串 - 表示的时候只能加双引号,支持转义字符布尔 - 只有原创 2021-12-21 21:25:20 · 52 阅读 · 0 评论 -
第十六天 常用系统模块
1. os模块 - 用来提供文件和文件夹相关操作的模块import os1) os.getcwd() - 获取当前目录print(os.getcwd()) # ‘/Users/yuting/lessons/Python2107/01语言基础/day16-常用系统模块’open(os.getcwd() + ‘/test.py’)2) os.listdir(文件夹路径) - 获取指定文件夹下所有的文件和文件夹的名字(获取指定文件夹下所有的内容)# 练习:读取files文原创 2021-12-21 01:19:13 · 175 阅读 · 0 评论 -
第十四天 模块与异常
1. 什么是模块python中一个py文件就是一个模块模块分为系统模块和自定义模块2. 怎么使用模块 - 怎么在一个模块中去使用另外一个模块中的内容“”"注意:1)如果一个模块中的内容想要能够被别的模块使用,那么这个模块的名字必须符合变量名的要求2)符合命名要求的模块中,只有全局变量可以被别的模块使用“”"3.怎么导入模块 - 要使用别的模块中的内容,必须先导入“”"1)import 模块名 - 导入指定模块,导入后可以通过’模块名.xxx’的方式去使用模块中所有的全局原创 2021-12-20 02:01:38 · 95 阅读 · 0 评论 -
第十三天 文件操作
1. 数据持久化计算机存储空间分为:运行内存和磁盘两种。程序中产生的数据默认都是保存在运行内存中,存储在运行内存中的数据在程序结束后会自动销毁。如果将数据存储到磁盘中,那么数据除非手动删除或者磁盘损坏,否则会一直存在。磁盘存储数据的基本单位是文件。数据持久化指的就是将程序中的数据以文件的形式保存到磁盘中。a = 100b = [‘abc’, ‘mn’, ‘xy’]2. 常见数据持久化工具数据库(.db、.sqlite)、json文件(.json)、xml文件(.xml)、plist文件(.p原创 2021-12-17 02:09:01 · 158 阅读 · 0 评论 -
第十二天 迭代器生成器
1. 什么是迭代器(iter)1)迭代器是容器型数据类型2)怎么创建迭代器:a.将其他序列转换成迭代器 b.创建生成器3)特点:打印的时候不能查看元素;无法获取元素个数;获取元素的时候必须将元素从迭代器中取出,取出后元素会从迭代器中消失,并且无法再添加。# 创建迭代器i1 = iter('abc')print(i1) # <str_iterator object at 0x10653ebe0># print(len(i1)) # 报错!i原创 2021-12-15 20:58:15 · 49 阅读 · 0 评论 -
第十一天 函数进阶
1. 匿名函数匿名函数的本质还是函数1)语法函数名 = lambda 形参列表: 返回值相当于:def 函数名(形参列表):return 返回值注意:匿名函数除了定义以及参数类型说明和普通函数不一样,其他都是一样的写一个匿名函数求两个数的和sum1 = lambda num1, num2: num1 + num2result = sum1(10, 30)print(result)func1 = lambda a, b=20, c=30: a + b + cresult = f原创 2021-12-14 21:01:04 · 87 阅读 · 0 评论 -
第九天 字符串操作
1. 字符串相关运算符1) 数学运算符字符串1 + 字符串2 - 将两个字符串合并成一个字符串字符串1 * N 、 N * 字符串 - 字符串重复N次产生一个新的字符串2) 比较运算==、!=比较大小:>=、<=、>、<两个字符串比较大小比较的是第一对不相等的字符的编码值的大小应用:比较字符大小来判断字符的类型判断是否是数字字符: ‘0’ <= x <= ‘9’判断是否是小写字母: ‘a’ <= x <=原创 2021-12-10 21:02:07 · 289 阅读 · 0 评论 -
第八天 集合和字符串
1. 什么是集合(set)集合是容器型数据类型;将{}作为容器的标志,里面多个元素用逗号隔开:{元素1, 元素2, 元素3,…}可变的;无序元素的要求:a.必须是不可变类型的数据b.元素是唯一的 (自动去重)空集合s1 = set()print(len(s1), type(s1)) # 0 <class 'set'>集合无序print({10, 20, 30} == {30, 20, 10}) # True元素是不可变类型的数据s2 = {1原创 2021-12-09 21:48:55 · 200 阅读 · 0 评论 -
第七天 字典
1. 使用多个变量同时获取列表或者元组的元素要求变量的个数必须和元组/列表元素的个数保持一致t1 = (10, 20, 30, 40)a, b, c, d = t1print(a, b, c, d)point = (10, 89)x, y = point2.使用多个变量同时获取列表或者元组的元素当变量的个数小于元素的个数的时候,必须在某一个变量前加*获取的时候先让不带的变量按照顺序获取对应的数据,把剩下的全部保存到带的变量中。*x, y = t1print(x) # [12原创 2021-12-08 21:39:59 · 456 阅读 · 0 评论 -
第六天 列表推导
1. 数学运算符: +、*列表1 + 列表2 - 将两个列表中的元素合并产生一个新的列表list1 = [100, 200, 300]list2 = [10, 20]print(list1 + list2) # [100, 200, 300, 10, 20]列表 * N / N * 列表 - 列表中的元素重复N次产生一个新的列表print(list2 * 3) # [10, 20, 10, 20, 10, 20]print(list2 * 1)原创 2021-12-07 21:30:30 · 512 阅读 · 0 评论 -
第五天:列表
变量是从是否是容器分为:非容器型数据类型的变量和容器型数据类型的变量非容器型数据类型的变量 - int、float、bool、None容器型数据类型的变量 - list、dict、tuple、set、strlist列表是容器型数据类型;将[ ]作为容器标志,里面多个元素用逗号隔开:列表是可变的(支持增删改);列表有序(支持下标操作)列表中元素:任何类型的数据都可以作为列表的元素。元素 - 是指容器中的每一个独立的数据空列表list1 = []同一个列表中的元素可以是不同类型的数据 li原创 2021-12-06 20:31:39 · 171 阅读 · 0 评论