python学习
文章平均质量分 78
Eshel_
这个作者很懒,什么都没留下…
展开
-
Spider10多线程
1. b站数据爬虫from selenium.webdriver import Chrome, ChromeOptionsimport timefrom bs4 import BeautifulSoupfrom re import searchfrom concurrent.futures import ThreadPoolExecutorimport csvfrom queue import Queueoptions = ChromeOptions()options.add_exper原创 2022-05-20 19:06:43 · 274 阅读 · 0 评论 -
Spider09队列和线程池
1. 作业豆瓣电影import requestsfrom threading import Threadimport csvfrom bs4 import BeautifulSoupheaders = { 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36'}de原创 2022-05-19 16:51:39 · 137 阅读 · 0 评论 -
Spider08多线程基础
1. 爬虫流程获取网页数据 --> 解析数据 --> 保存数据。1)第一步:确定目标网页;2)第二步:找数据接口: a. 有数据接口 --> 直接使用requests对数据接口发送请求 -> 网页数据获取完成 b. 没有数据接口 --> 第三步3)第三步:用requests直接对网页发送请求(可能涉及到添加user-agent或者添加cookie):a. 请求结果中有目标数据 --> 网页数据获取完成b. 请求结果中没有目标数据 --> 第原创 2022-05-18 22:04:16 · 215 阅读 · 0 评论 -
Spider07selenium进阶登录反爬
1. 选项卡切换from selenium.webdriver import Chromefrom selenium.webdriver.common.keys import Keysimport timefrom bs4 import BeautifulSoup1.1 创建浏览器对象b = Chrome()1.2 打开网页b.get('https://www.cnki.net/')1.3 搜索论文search = b.find_element_by_id('txt_SearchT原创 2022-05-17 20:59:23 · 487 阅读 · 0 评论 -
Spider06selenium
1. selenium打开网页导入所需包from selenium.webdriver import Chromeimport timeimport refrom bs4 import BeautifulSoupfrom lxml import etree1.1 创建浏览器对象b = Chrome()1.2 打开网页打开网页(需要爬取网页数据的网页)。b.get('https://movie.douban.com/top250')# 等待time.sleep(1)1.3原创 2022-05-17 20:57:43 · 123 阅读 · 0 评论 -
Spider05
1. Xpath解析1.1 XPthXPth:是一门在XML文档中查找内容的语言。XML文档:存储和传输数据的。 --> json数据。1.2 json和XML区别1)json数据对机器友好型语言。2)XML对人类友好型语言。1.3 XPath根据什么在XML查找内容1)XML文档中有很多节点。例如:根节点(文档节点)、属性节点、内容节点、元素节点等。2)xml文档是树形结构。xml_str = """<supermarket> --> 根节点(文档节点)原创 2022-05-17 20:50:54 · 90 阅读 · 0 评论 -
Spider04
1. BeautifulSoup4使用from bs4 import BeautifulSouphtml = """<html><head><title>The Dormouse's story</title></head><body><p class="title" name="dromouse"><b>The Dormouse's story</b></p><p c原创 2022-05-17 20:33:42 · 130 阅读 · 0 评论 -
Spider03
1. html文字标签1)标题标签:自带加粗、自带换行(h1~h6)<h1>我是一级标签</h1><h2>我是二级标签</h2><h3>我是三级标签</h3><h4>我是四级标签</h4><h5>我是五级标签</h5><h6>我是六级标签</h6>2)段落标签:p:自带换行<p>大熊猫(学名:Ailuropoda melanoleuc原创 2022-05-16 22:30:18 · 192 阅读 · 0 评论 -
day20-Spider02
1. 批量下载图片作业import requestsimport jsonfor x in range(1, 10): URL = 'https://api.ixiaowai.cn/api/api.php?return=json' resp = requests.get(url=URL) resp.encoding = 'utf-8-sig' # print(resp.text,type(resp.text)) # 序列化 data = json.lo原创 2022-05-10 19:16:15 · 377 阅读 · 0 评论 -
day19-Spider01
1. 爬虫简介数据分析、数据挖掘,先分析再挖掘(前提:有数据)。数据来源:1. 数据库;2. 爬虫;3. 其他平台(API)。1.1 爬虫的概念Spider:蜘蛛 --> 爬虫:可以在互联网的任意位置获取数据。爬虫,别名(网页蜘蛛、蠕虫),学名:网络数据采集。根据程序员的自定义规则(想法)在互联网中自动的爬取数据(图片、音频、视频、文字等都叫做数据)。1.2 爬虫学习流程1.2.1 爬虫对谁做操作?表面:爬虫对网页做操作;深层次:爬虫对服务器做操作。1.2.2 对网页操作1原创 2022-05-10 19:15:30 · 472 阅读 · 0 评论 -
继承json和csv文件操作作业
作业1:将酒店数据按照地区分类放入每个地区对应的csv文件中:import csv# 1). 读取文件reader = csv.DictReader(open('files/北京高档酒店价格分析.csv', encoding='utf-8', newline=''))# print(list(reader))# 2). 获取键keys = list(list(reader)[0].keys())# print(keys)# 3).遍历到每一个数据(字典),判断是哪个区,然后写入对应的文原创 2022-05-09 19:26:58 · 390 阅读 · 0 评论 -
继承json和csv文件操作
1. 继承1.1 继承继承 - 让子类直接拥有父类的属性和方法。子类 - 继承者;父类 - 被继承者;关系:父类拥有的东西,子类都有,但是子类除了有父类的东西以外还有一些额外特有的东西。class Person: def __init__(self): self.name = '小明' self.age = 18 self.gender = '男' def eat(self): print('吃饭'原创 2022-05-07 18:35:17 · 517 阅读 · 0 评论 -
面向对象基础
1. 编程思想编程思想:程序员在面对一个问题的时候首先想到的解决这个问题的想法。1.1 面向过程编程面向过程编程 - 会基本语法和逻辑。1.2 函数式编程函数式编程 - 会基本语法和逻辑还需要函数。1.3 面向对象编程面向对象编程 - 会基本语法和逻辑、函数 还需要类和对象。# 练习:计算8的阶乘s = 1for x in range(1,9): s *= xprint(s)import mathprint(math.factorial(8))原创 2022-05-06 19:25:48 · 132 阅读 · 0 评论 -
正则表达式
1. 认识正则表达式from re import fullmatch,search正则表达式: 解决字符串问题的工具(让复杂的字符串问题变得简单的一个工具)。问题:验证输入的手机号是否合法abc - 不是123 - 不是12345678901 - 不是13345678905 - 合法133456789900 - 不合法# 方法1:def is_tel_num(tel_no:str): if len(tel_no) != 11: retur原创 2022-05-05 20:15:32 · 661 阅读 · 0 评论 -
文件夹整理和登录操作系统作业
1. 文件夹整理import osfrom shutil import movedef clear_up_folder(path:str): """ 整理文件夹,将相同后缀的文件放入指定文件夹中 :param path: 需要整理的文件夹路径 :return: None """ for x in os.listdir(path): x_path = os.path.join(path,x) if os.path.isfi原创 2022-04-30 13:16:08 · 458 阅读 · 0 评论 -
系统模块和文件操作
1. time模块提前导入:from time import *1.1 time()time() - 获取当前时间的时间戳。1.2 localtime()localtime() - 获取本地的当前时间,回值是结构体时间。localtime(时间戳) - 将时间戳转换成本地时间对应的结构体时间。t1 = localtime()print(t1)通过结构体时间获取具体的时间信息:时间对象.时间属性名。print('年:',t1.tm_year)1.3 将字符串时间原创 2022-04-28 20:50:14 · 118 阅读 · 0 评论 -
python包和模块
1. 模块1.1 什么是模块python中一个py文件就是一个模块。1.2 怎么在一个模块中使用另一个模块的内容1)前提:被使用的模块的模块名(py文件的文件名)必须符合变量名的要求(是标识符,不是关键字);2)能被使用的内容:所有的全局变量;3)怎么用:使用别的模块中的内容前,必须先导入模块。1.3 导入模块1)import 模块名 - 导入指定模块;导入后可以通过’模块名.xxx’的方式使用这个模块中所有的全局变量;import testprint(test.a)test.fu原创 2022-04-27 19:28:43 · 444 阅读 · 0 评论 -
迭代器生成器装饰器
1. 迭代器1.1 什么是迭代器(iter)1)迭代器是容器;程序中无法直接创建一个迭代器,只能将别的序列转换成迭代器。2)特点:打印迭代器无法查看所有的元素、也无法获取元素的个数;获取元素的时候每次只能获取最前面的元素,而且元素取一个就少一个。i1 = iter('abc123')print(i1) # <str_iterator object at 0x000001E2A9C78460># print(len(i1)) # 报错!i2 = iter([10,20原创 2022-04-26 17:47:57 · 325 阅读 · 1 评论 -
Python函数进阶
1. 匿名函数1.1 匿名函数没有名字的函数。'''语法:函数名 = lambda 形参列表:返回值相当于def 函数名(形参列表): return 返回值'''1.2 注意1)匿名函数的本质还是函数;2)普通函数中的绝大部分内容匿名函数都支持1.3 练习练习1:求任意两个数据的和。# 普通函数def sum1(num1: int, num2= 2): return num1 + num2# 匿名函数x = lambda num1,num2= 2:原创 2022-04-25 19:52:17 · 170 阅读 · 0 评论 -
Python函数基础
1. 函数的定义1.1 函数的概念函数就是实现某一特定功能的代码的封装。函数就是把实现某一个功能的代码打成一个包,以后再需要这段代码对应的功能的时候不需要再写这段代码,而是直接调用封装这段代码的函数。1.2 函数分类1)系统函数(别人造好的机器):python自带的函数,例如:print、input、type、max、min、sorted等;2)自定义函数(自己造的机器):由程序员自己创建的函数。1.3 定义/创建函数1.3.1 语法'''def 函数名(形参列表): 函数说明原创 2022-04-24 20:53:33 · 196 阅读 · 0 评论 -
Python字符串
1. 字符串相关函数1.1 len1.2 strstr(数据):所有的数据都可以转换成字符串;转换的时候是在数据的打印值外面加引号。num = 123# srr(sum) - # '123'num2 = 1.23# str(num2) - # '1.23'list1 = [10,20,30]print(list1) # [10, 20, 30]# str(list1) - # '[10, 20, 30]'list2 = ["abc",10,20]print(l原创 2022-04-22 22:48:43 · 641 阅读 · 0 评论 -
元组集合和字符串
1. 元组和集合1.1 元组1.1.1 什么是元组(tuple)1)容器;将()作为容器的标志,里面多个元素用逗号隔开:(元素1,元素2,元素3,…);2)不可变的(不支持增删改);有序的(支持下标操作);3)元素:任何数据。# 空元组t1 = ()# 只有一个元素的元组(重点) - 唯一的这个元素后必须加逗号t2 = (100)print(t2,type(t2)) # 100 <class 'int'>t3= (100,)print(t3,type(t3)原创 2022-04-21 18:55:30 · 276 阅读 · 0 评论 -
字典元组和集合
1. 认识字典用一个容器同时保存多个数据的时候的建议:如果多个数据的意义相同用列表,如果多个数据的意义不同用字典。stu = ['小明',18,175,75,90,'男']print(stu[1])stu = {'name':'小明','age':'45','height':175,'weigjt':75,'score':90,'gender':'男'}print(stu['age'])1.1 什么是字典(dict)1)字典是容器型数据类型:将{}作为容器的标志,里面多个元素用逗号隔开原创 2022-04-20 20:04:42 · 314 阅读 · 0 评论 -
Python列表进阶
1. 列表相关操作1.1 数学运算符(+、*)1)列表1 + 列表2:将两个列表合并产生一个新的列表。print([10,20,30]+[100,200]) # [10, 20, 30, 100, 200]list1 = [10,20,30]list2 = [100,200]result = list1 + list2print(result) # [10, 20, 30, 100, 200]print(list1,list2) # [10, 20, 30] [原创 2022-04-19 19:52:28 · 887 阅读 · 0 评论 -
Python列表
1. 认识列表1.1 什么是列表1)列表是容器型数据类型(可以同时保存多个数据);2)将中括号([])作为容器的标志,里面多个元素(一个容器中逗号隔开的每个独立的数据)用逗号隔开:[元素1,元素2,元素3];3)列表是可变的:可变指的是元素的个数、元素的值和元素的顺序可变;列表支持增删改;列表是有序的:列表支持下标操作。4)列表的元素:任何类型的数据都可以作为列表的元素。1.2 列表中的元素类型1)同一个列表中的元素类型可以相同list2 = [78,45,25,66]print(lis原创 2022-04-19 19:51:47 · 1275 阅读 · 0 评论 -
while循环和循环关键字
1. while循环1.1while1.1.1 语法'''while 条件语句: 循环体'''1.1.2 说明1)while:关键字;固定写法;2)条件语句:和if中的条件语句的要求一样;3)冒号 : 固定写法;4)循环体:结构上和while保持一个缩进的一条或者多条语句;逻辑上,需要重复执行的代码。1.1.3 执行过程判断条件语句是否为True,如果是就执行循环体,否则循环就结束。流程图:x = 0while x < 5: print('==原创 2022-04-16 14:53:26 · 1017 阅读 · 0 评论 -
Python流程控制
1. 流程控制控制代码执行的方式。根据代码执行方式不同,将代码分为三种结构:1)顺序结构(默认)代码从上往下按顺序依次执行,并且每条语句只执行一次。a = 10print(a)print(11)print('22')2) 分支结构(if语句)根据条件选择执行代码。age = 25if age >= 18: print('成年')else: print('未成年')3)循环结构(for、while)让代码重复执行(代码只写一遍,执行多次)。for x i原创 2022-04-14 20:18:57 · 1128 阅读 · 0 评论 -
变量和运算符
1. 变量1.1 感受变量是有用的# 打印5次:'默默的在背后望着你的背影,当你危险时,我会毫不犹豫的从天而降。哪怕双腿以被大地震的生疼,我一样会咬紧牙关,再次跳向对手,抛出手中的战矛。哪怕身死我也要你活着…'print('默默的在背后望着你的背影,当你危险时,我会毫不犹豫的从天而降。哪怕双腿以被大地震的生疼,我一样会咬紧牙关,再次跳向对手,抛出手中的战矛。哪怕身死我也要你活着…')print('默默的在背后望着你的背影,当你危险时,我会毫不犹豫的从天而降。哪怕双腿以被大地震的生疼,我一样会咬紧牙原创 2022-04-13 22:37:44 · 200 阅读 · 0 评论 -
基础语法和工具函数
1. 常用快捷键快捷键功能ctr + /添加或取消注释ctr + c复制ctr + v粘贴ctr + x剪切ctr + s保存ctr + f搜索(查找)ctr + a全选ctr + z撤销ctr + shift + z反撤销(后悔撤销使用)按shift键点鼠标选中范围按alt键点鼠标多光标操作2. 基础语法2.1 注释注释是代码中不会被翻译成机器码的部分(注释的存在不会影响程序的功能)。2.1原创 2022-04-12 20:20:44 · 358 阅读 · 0 评论