简单爬虫实例:
功能:通过urllib.request实现网站爬虫,捕获网站内容。
from urllib import request

def f(url):
print("GET:%s"% url) # 实例化
resp = request.urlopen(url) # data就是下载的网页
data = resp.read() # 打开url下载到本地
f = open("url.html","wb")
f.write(data)
f.close()
print('%d bytes received from %s.' % (len(data), url)) # 需要爬的网页
f("http://www.cnblogs.com/alex3714/articles/5248247.html")
遇到IO阻塞时会自动切换任务:
功能:爬虫网页,并通过gevent.monkey 实现io自动切换,并发并行捕获网页。
测试:并行时间,串行时间。
import gevent,time
from urllib import request
from gevent import monkey # 把当前程序的所有的io操作给我单独的坐上标记
# 相当于gevent.sleep
monkey.patch_all() def f(url):
print("GET:%s"% url) # 实例化网页捕获
resp = request.urlopen(url) # data就是下载的网页
data = resp.read()
print('%d bytes received from %s.' % (len(data), url)) #---------------------------串行------------------------------#
# 创建列表
urls = ['https://www.python.org/',
'https://www.yahoo.com/',
'https://github.com/'
] # 获取同步时间
time_start = time.time() # 循环打印网页
for url in urls:
f(url)
print("同步cost",time.time() - time_start) #--------------------------并行--------------------------------#
# 获取异步时间
async_time_start = time.time()
# 执行协程
gevent.joinall([
# 生成三个协程,执行f函数,参数。
gevent.spawn(f, 'https://www.python.org/'),
gevent.spawn(f, 'https://www.yahoo.com/'),
gevent.spawn(f, 'https://github.com/'),
])
print("异步cost",time.time() - async_time_start)

Python 协程并发爬虫网页的更多相关文章

  1. python 协程并发下载图片

    1 import aiohttp 2 import asyncio 3 import time 4 5 async def dl_coroutine(session,url): 6 print('开始 ...

  2. Python爬虫练习(多线程,进程,协程抓取网页)

    详情点我跳转 关注公众号"轻松学编程"了解更多. 一.多线程抓取网页 流程:a.设置种子url b.获取区域列表 c.循环区域列表 d.创建线程获取页面数据 e.启动线程 impo ...

  3. Python进阶----异步同步,阻塞非阻塞,线程池(进程池)的异步+回调机制实行并发, 线程队列(Queue, LifoQueue,PriorityQueue), 事件Event,线程的三个状态(就绪,挂起,运行) ,***协程概念,yield模拟并发(有缺陷),Greenlet模块(手动切换),Gevent(协程并发)

    Python进阶----异步同步,阻塞非阻塞,线程池(进程池)的异步+回调机制实行并发, 线程队列(Queue, LifoQueue,PriorityQueue), 事件Event,线程的三个状态(就 ...

  4. python爬虫---单线程+多任务的异步协程,selenium爬虫模块的使用

    python爬虫---单线程+多任务的异步协程,selenium爬虫模块的使用 一丶单线程+多任务的异步协程 特殊函数 # 如果一个函数的定义被async修饰后,则该函数就是一个特殊的函数 async ...

  5. python协程和IO多路复用

     协程介绍                                                                                                ...

  6. windows下多进程加协程并发模式

    好久没更新博客了.正好最近要整理一下最近这段时间做过的项目以及学习python的一些心得.如标题所示,今天就来说说windows下多进程加协程并发模式.其实网上还是蛮多在linux下的多进程加协程并发 ...

  7. python协程详解,gevent asyncio

    python协程详解,gevent asyncio 新建模板小书匠 #协程的概念 #模块操作协程 # gevent 扩展模块 # asyncio 内置模块 # 基础的语法 1.生成器实现切换 [1] ...

  8. Python核心技术与实战——十六|Python协程

    我们在上一章将生成器的时候最后写了,在Python2中生成器还扮演了一个重要的角色——实现Python的协程.那什么是协程呢? 协程 协程是实现并发编程的一种方式.提到并发,肯很多人都会想到多线程/多 ...

  9. day-5 python协程与I/O编程深入浅出

    基于python编程语言环境,重新学习了一遍操作系统IO编程基本知识,同时也学习了什么是协程,通过实际编程,了解进程+协程的优势. 一.python协程编程实现 1.  什么是协程(以下内容来自维基百 ...

随机推荐

  1. LeetCode - 503. Next Greater Element II

    Given a circular array (the next element of the last element is the first element of the array), pri ...

  2. Nest.js 添加中间件

    Docs: https://docs.nestjs.com/middleware 创建中间件 logger.middleware.ts import { Injectable, NestMiddlew ...

  3. web 接口测试入门

    在此之前先简单的介绍一下基本概念:我们想要打开一个网站,首先是需要往浏览器的地址的URL输入框架中输入网地址.当我敲下回车后,通过HTTP协议,将网址传送到域名解析服务器,域名解析服务器根据网址找到对 ...

  4. upstream模块调度算法

    反向代理调度算法,轮询算法--——领导如何挑选小弟.迎宾小姐如何挑选服务员. 调度一般分为两类,第一类为静态调度算法,即负载均衡器根据自身设定的规划进行分配,不需要考虑节点的情况,例如,rr.wrr. ...

  5. PHP(一般标签介绍,标签特性,实体名称,绝对路径与相对路径)

    h1:为标题  h1~h6 标题会逐渐变小 需更换标签里面的数字 如: <h1>这是标题123</h1>---标题 <h2>这是标题123</h2>-- ...

  6. 微信JS-SDK说明文档【申明:来源于网络】

    微信JS-SDK说明文档[申明:来源于网络] 地址:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html

  7. ios 11越狱移除

    https://baijiahao.baidu.com/s?id=1593748369421662278&wfr=spider&for=pc 不越狱抹机步骤: 点击设置  进入自带游览 ...

  8. git版本控制工具

    git 基本操作 1.git init 在一个文件夹下执行该命令,对该文件夹下的内容进行管理.在该文件夹下会创建一个隐藏的目录.git 2.git status 查看文件夹下内容的状态,没有更改的则什 ...

  9. C#中的double类型数据向SQL sqerver 存储与读取问题

    1.存储 由于double类型在SQLsever中并没有对应数据,试过对应float.real类型,发现小数位都存在四舍五入的现象,目前我使用的是decimal类型,用此类型时个人觉得小数位数应该比自 ...

  10. xutils android studio引用问题

    然后rebuild--->关闭项目-->重启,ok public class MyApplication extends Application { @Override public vo ...