随笔分类 -  爬虫

摘要:假如你的并发达到2000个,程序会报错:ValueError:too many file descriptors in select()。报错的原因字面上看是Python调取的select对打开的文件有最大数量的限制,这个其实是操作系统的限制,Linux打开文件的最大数默认是1024,Windows 阅读全文
posted @ 2022-05-31 14:12 郭祺迦 阅读(356) 评论(0) 推荐(0)
摘要:示例1:# -*- coding: utf-8 -*- import aiomysql import asyncio async def test_mysql(): # 网络IO操作,连接MySQL conn = await aiomysql.connect(host='127.0.0.1', po 阅读全文
posted @ 2022-05-31 14:12 郭祺迦 阅读(145) 评论(0) 推荐(0)
摘要:在使用python代码操作Redis时,连接/操作/断开都是IO。pip3 install aioredis# -*- coding: utf-8 -*- import asyncio import aioredis async def execute(address, password): pri 阅读全文
posted @ 2022-05-31 14:11 郭祺迦 阅读(218) 评论(0) 推荐(0)
摘要:1、异步上下文管理器此种对象通过定义__aenter__()和__aexit__()方法来对async with语句中的环境进行控制。import asyncio class AsyncContextManage: def __init__(self): self.conn = conn async 阅读全文
posted @ 2022-05-31 14:10 郭祺迦 阅读(55) 评论(0) 推荐(0)
摘要:是asyncio的时间玄幻的替代方案。事件循环 > 默认asyncio的事件循环。pip3 install uvloopimport asyncio import uvloop asyncio.set_event_loop_policy(uvloop.EventLoopPolicy()) # 编写a 阅读全文
posted @ 2022-05-31 14:10 郭祺迦 阅读(108) 评论(0) 推荐(0)
摘要:1、什么是异步迭代器实现了__aiter__()和__anext__()方法的对象。__anext__必须返回一个awaitable对象。async for会处理异步迭代器的__anext__()方法所返回的可等待对象,直到引发一个StopAsyncIteration异常。由PEP 492引入。2、 阅读全文
posted @ 2022-05-31 14:09 郭祺迦 阅读(70) 评论(0) 推荐(0)
摘要:1、concurrent.futures.Future对象使用线程池、进程池实现异步操作时用到的对象。具体参考:2020-11-16 ThreadPoolExecutor 的用法及实战以后写代码可能会存在交叉使用。例如:你的某个项目都是基于协程异步编程,加入mysql不支持协程,那么在访问数据库的时 阅读全文
posted @ 2022-05-31 14:08 郭祺迦 阅读(179) 评论(0) 推荐(0)
摘要:1、案例:asyncio+不支持异步的模块# -*- coding: utf-8 -*- import asyncio import requests async def download_image(url): # 发送网络请求,下载图片(遇到网络下载图片的IP请求,自动化切换到其他任务) pri 阅读全文
posted @ 2022-05-31 14:08 郭祺迦 阅读(40) 评论(0) 推荐(0)
摘要:Task继承Future,Task对象内部await结果的处理基于Future对象来的。示例1:# python3.7的写法 import asyncio async def main(): # 获取当前事件循环 loop = asyncio.get_running_loop() # 创建一个任务( 阅读全文
posted @ 2022-05-31 14:07 郭祺迦 阅读(44) 评论(0) 推荐(0)
摘要:白话:在事件循环中添加多个任务Tasks用于并发调度协程,通过asyncio.create_task(协程对象)的方式创建Task对象,这样可以让协程加入事件循环中等待被调度执行。处理使用async.create_task()函数以外,还可以用低层级的loop.create_task()或ensur 阅读全文
posted @ 2022-05-31 14:06 郭祺迦 阅读(111) 评论(0) 推荐(0)
摘要:协程函数:定义函数时候async def 函数名。协程对象:执行 协程函数() 得到的就是协程对象async def func(): pass result = func() #result就是协程对象注意:执行协程函数创建协程对象,函数内部的代码不会执行的。如果想要执行协程函数内部代码,必须要将协 阅读全文
posted @ 2022-05-31 14:05 郭祺迦 阅读(37) 评论(0) 推荐(0)
摘要:1、awaitawait + 可等待的对象(协程对象、Future、Task对象 --> IO等待)示例1:import asyncio async def func(): print('来玩啊') response = await asyncio.sleep(2) print('结束:', res 阅读全文
posted @ 2022-05-31 14:05 郭祺迦 阅读(124) 评论(0) 推荐(0)
摘要:1、事件循环理解成为一个死循环,去检测并执行某些代码。# 伪代码 任务列表 = ['任务1', '任务2', '任务3', ...] while True: 可执行的任务列表, 已完成的任务列表 = 去任务列表中检查所有的任务, 将"可执行"和"已完成"的任务返回 for 就绪任务 in 可执行的任 阅读全文
posted @ 2022-05-31 14:04 郭祺迦 阅读(124) 评论(0) 推荐(0)
摘要:1、协程协程不是计算机提供的,是由程序员人为的创建的协程(Coroutine):也可以被称为微线程,是一种用户态内的上下文切换技术。简而言之,其实就是通过一个线程实现代码块相互切换执行。2、实现协程的几种方法greenletyield关键字asyncio装饰器(py3.4)async await关键 阅读全文
posted @ 2022-05-31 14:01 郭祺迦 阅读(89) 评论(0) 推荐(0)
摘要:2、scroll滑动事件概念从一个元素滑动到另一个元素,直到页面自动停止方法名# 从一个元素滑动到另一个元素,直到页面自动停止 # 参数: # origin_el:滑动开始的元素 # destination_el:滑动结束的元素 driver.scroll(origin_el, destinatio 阅读全文
posted @ 2022-05-31 10:01 郭祺迦 阅读(84) 评论(0) 推荐(0)
摘要:一、滑动和拖拽事件应用场景我们在做自动化测试的时候,有些按钮是需要滑动几次屏幕后才会出现,此时,我们需要使用代码来模拟手指3的滑动,也就是我们学习的滑动和拖拽事件1、swipe滑动事件概念从一个坐标位置滑动到另一个坐标位置,只能是两个点之间的滑动方法名# 从一个坐标位置到另外一个坐标位置,只能是两个 阅读全文
posted @ 2022-05-31 10:00 郭祺迦 阅读(102) 评论(0) 推荐(0)
摘要:应用场景根据特征定位到元素后,使元素的属性名获取对应的属性值方法名# 对element进行点击操作 # 参数: # value:要获取的属性名 # 返回值: # 根据属性名得到的属性值 element.get_attribute(value) # value:元素的属性示例打开设置获取所有resou 阅读全文
posted @ 2022-05-31 09:59 郭祺迦 阅读(61) 评论(0) 推荐(0)
摘要:元素操作API1、点击元素应用场景需要点击某个按钮的时候使用方法名# 对element按钮进行点击操作 element.click()示例打开设置点击放大镜按钮核心代码:driver.find_element_by_id('com.android.settings:id/search').click 阅读全文
posted @ 2022-05-31 09:57 郭祺迦 阅读(169) 评论(0) 推荐(0)
摘要:1、应用场景针对所有定位元素的超时时间设置为不同的值的时候2、概念等待元素加载指定的时长,超出时长抛出TimeoutException异常3、步骤导包创建WebDriverWait对象调用WebDriverWait对象的until方法4、方法参数解释# 参数 # driver:驱动对象 # time 阅读全文
posted @ 2022-05-31 09:55 郭祺迦 阅读(92) 评论(0) 推荐(0)
摘要:1、应用场景针对所有定位元素的超时时间设置为同一个值的时候2、概念等待元素加载指定的时长,超时时长抛出NoSuchElementException异常3、步骤在获取driver对象后,使用driver调用implicitly_wait方法即可。4、方法参数解释# 参数 # timeout:超时的时长 阅读全文
posted @ 2022-05-31 09:54 郭祺迦 阅读(59) 评论(0) 推荐(0)