1. 同步爬取时光网Top100

利用requests和bs4模块就行了

import requests
from bs4 import BeautifulSoup
import timestart=time.time()
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36'}#获取时光网TOP100的十个网址
url_1='http://www.mtime.com/top/movie/top100/'
list_url=[]   #将需要的网址封装成列表
list_url.append(url_1)
for i in range(2,11):url='http://www.mtime.com/top/movie/top100/index-'+str(i)+'.html'list_url.append(url)for i in list_url:                          #遍历网址res=requests.get(i,headers=headers)       #发出请求bs=BeautifulSoup(res.text,'html.parser')  #解析数据tagall=bs.find_all('div',class_="mov_con")   for tag in tagall:title=tag.find('h2').find('a').text   #爬取电影名lj=tag.find('h2').find('a')['href']   #爬取电影的网址print(title,lj)end=time.time()  #结束时间
print(f"共用时:{end-start:.2f}秒")          #共耗时等于结束时间减去开始时间

2. 利用gevent库异步爬取时光网Top100

安装模块 pip install gevent

#在导入其他库和模块前,先把monkey模块导入进来,并运行monkey.patch_all()。这样,才能先给程序打上补丁。
from gevent import monkey        #从gevent库里导入了monkey模块,这个模块能将程序转换成可异步的程序
monkey.patch_all()               #它的作用其实就像你的电脑有时会弹出“是否要用补丁修补漏洞或更新”一样。它能给程序打上补丁,让程序变成是异步模式,而不是同步模式。它也叫“猴子补丁”。import gevent,time,requests      #我们导入了gevent库来帮我们实现多协程,导入了time模块来帮我们记录爬取所需时间,导入了requests模块帮我们实现爬取10个网站。
from bs4 import BeautifulSoup
import timestart=time.time()                #开始时间
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36'}#获取时光网TOP100的十个网址
url_1='http://www.mtime.com/top/movie/top100/'
list_url=[]                      #将需要的网址封装成列表
list_url.append(url_1)
for i in range(2,11):url='http://www.mtime.com/top/movie/top100/index-'+str(i)+'.html'list_url.append(url)def cra(url):                    #定义一个函数,用来执行解析网址和爬取内容res=requests.get(url,headers=headers)       #发出请求bs=BeautifulSoup(res.text,'html.parser')    #解析数据tagall=bs.find_all('div',class_="mov_con")   for tag in tagall:title=tag.find('h2').find('a').text     #爬取电影名lj=tag.find('h2').find('a')['href']     #爬取电影的网址print(title,lj)tasks_list = []                    #创建空列表
for url in list_url:               #遍历网址task = gevent.spawn(cra,url)   #用gevent.spawn()创建任务,此任务可以调用cra(url)函数,注意括号里参数的写法tasks_list.append(task)        #将任务加入列表
gevent.joinall(tasks_list)         #调用gevent库里的joinall方法,能启动执行所有的任务。gevent.joinall(tasks_list)就是执行tasks_list这个任务列表里的所有任务,开始爬取。end = time.time()                  #结束时间
print(f"共用时:{end-start:.2f}秒") #共耗时   

3. 结合gevent库中的queue模块创建多个爬虫异步爬取时光网Top100

#在导入其他库和模块前,先把monkey模块导入进来,并运行monkey.patch_all()。这样,才能先给程序打上补丁。
from gevent import monkey             #从gevent库里导入了monkey模块,这个模块能将程序转换成可异步的程序
monkey.patch_all()                    #它的作用其实就像你的电脑有时会弹出“是否要用补丁修补漏洞或更新”一样。它能给程序打上补丁,让程序变成是异步模式,而不是同步模式。它也叫“猴子补丁”。import gevent,time,requests           #我们导入了gevent库来帮我们实现多协程,导入了time模块来帮我们记录爬取所需时间,导入了requests模块帮我们实现爬取10个网站。
from bs4 import BeautifulSoupfrom gevent.queue import Queue        #从gevent库里导入queue模块start=time.time()                     #开始时间
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36'}#获取时光网TOP100的十个网址
url_1='http://www.mtime.com/top/movie/top100/'
list_url=[]                           #将需要的网址封装成列表
list_url.append(url_1)
for i in range(2,11):url='http://www.mtime.com/top/movie/top100/index-'+str(i)+'.html'list_url.append(url)work=Queue()                          #创建队列对象,并赋值给work。
for i in  list_url:                   #遍历网址work.put_nowait(i)                 #将网址放进队列里面     def cra():                            #定义一个函数,用来执行解析网址和爬取内容while not work.empty():            #当队列不是空的时候,就执行下面的程序。url = work.get_nowait()        #将网址从队列里面提取出来res=requests.get(url,headers=headers)       #发出请求bs=BeautifulSoup(res.text,'html.parser')    #解析数据tagall=bs.find_all('div',class_="mov_con")   for tag in tagall:title=tag.find('h2').find('a').text     #爬取电影名lj=tag.find('h2').find('a')['href']     #爬取电影的网址print(title,lj)tasks_list = []                       #创建空列表
for i in range(2):                    #创建2个任务,相当于2条爬虫task = gevent.spawn(cra)           #用gevent.spawn()创建任务,此任务可以调用cra函数,注意括号里参数的写法tasks_list.append(task)            #将任务加入列表
gevent.joinall(tasks_list)            #调用gevent库里的joinall方法,能启动执行所有的任务。gevent.joinall(tasks_list)就是执行tasks_list这个任务列表里的所有任务,开始爬取。end = time.time()                     #结束时间
print(f"共用时:{end-start:.2f}秒")    #共耗时

Python爬虫笔记——多协程gevent()相关推荐

  1. Python爬虫笔记——多协程(gevent and queue)

    1.爬取8个网站(包括百度.新浪.搜狐.腾讯.网易.爱奇艺.天猫.凤凰).用多协程gevent()模块来爬取. 这里有一个关于gevent的一些基础介绍的链接 Python并发之协程gevent基础( ...

  2. Python爬虫——aiohttp异步协程爬取同程旅行酒店评论

    大家好!我是霖hero Python并发编程有三种方式:多线程(Threading).多进程(Process).协程(Coroutine),使用并发编程会大大提高程序的效率,今天我们将学习如何选择多线 ...

  3. Python爬虫项目实例——多协程爬取【薄荷网】的食物热量

    爬虫网站:http://www.boohee.com/food/group 爬的信息:食物的名称及热量 代码: import gevent from gevent.queue import Queue ...

  4. Python 爬虫 - Instagram异步协程

    前言 没啥目的,就觉得ins里妹子图多... 正文 一.分析 1.分析目标网站 首先分析网站图片加载流程, taeri__taeri 应该有人认识这个网红.ins照片一次只加载了一定数量的照片,往下翻 ...

  5. Python并发之协程gevent基础

    基本示例 from gevent import monkey monkey.patch_all() # 记住一定放在第一行,这里是打补丁的意思,time模块在使用协程gevent模块的时候,必须打补丁 ...

  6. 异步爬虫框架与协程浅析

    异步爬虫框架与协程浅析 经典原文使用协成完成异步爬虫原文链接 根据分享原文链接. Python基于协程的实现,其实是利用了Python生成器的特性完成的,Python生成器的原理其实涉及到用户态绿色线 ...

  7. python并发编程之协程

    python并发编程之协程 1.协程: 单线程实现并发 在应用程序里控制多个任务的切换+保存状态 优点: 应用程序级别速度要远远高于操作系统的切换 缺点: 多个任务一旦有一个阻塞没有切,整个线程都阻塞 ...

  8. python并发编程:协程asyncio、多线程threading、多进程multiprocessing

    python并发编程:协程.多线程.多进程 CPU密集型计算与IO密集型计算 多线程.多进程与协程的对比 多线程 创建多线程的方法 多线程实现的生产者-消费者爬虫 Lock解决线程安全问题 使用线程池 ...

  9. python协程是什么_在python中线程和协程的区别是什么

    在python中线程和协程的区别:1.一个线程可以拥有多个协程,这样在python中就能使用多核CPU:2.线程是同步机制,而协程是异步:3. 协程能保留上一次调用时的状态,每次过程重入时,就相当于进 ...

最新文章

  1. Git 取消上一次commit操作,但保留add操作
  2. 为什么要学python语言_我们为什么要学习Python语言?
  3. Vue 踩坑日志 - 有关路由传参的坑
  4. CF802O-April Fools‘ Problem(hard)【wqs二分,优先队列】
  5. 光端机与光纤收发器的应用
  6. python调用c函数传字符串参数_Python使用ctypes模块调用DLL函数之传递数值、指针与字符串参数...
  7. 【nyist】6 喷水装置(一) (简单的贪心)
  8. BootStrap笔记-导航
  9. 二进制文件和普通文件(文本文件)区别
  10. 深度分析DROP,TRUNCATE与DELETE的区别【我的数据库之路系列】
  11. 经典书单 —— 机器学习/深度学习/AI/CV/PGM
  12. Linux 下安装python3
  13. 计算机毕业论文乐谱播放器,单片机音乐播放器毕业论文
  14. 那群“沙雕”年轻人,正在闲鱼上蹦迪
  15. 深入理解:面向服务与微服务架构
  16. 【2021 最新】100 道大厂大数据必考面试题+答案详解
  17. EXCEL学会两个函数你能打败90%的人,countifs和vlookup
  18. [附源码]JAVA+ssm计算机毕业设计房屋租赁管理系统设计(程序+Lw)
  19. Maven-POM.xml
  20. 四、函数的基本概念和使用

热门文章

  1. python爬取携程
  2. 计算机速录等级考试时间,全国计算机速录等级考试三级考试大纲
  3. PPT 如何两个视频同步播放
  4. 北京VS上海:“活着为了工作”还是“工作为了生活”?
  5. 阿里巴巴 电话面试java,记一次阿里巴巴电话面试
  6. mysql忽略列_mysql – 使用SQL语句更改忽略表添加列(如果不存在)
  7. java 23种设计模式
  8. 算法初步--二分法(以PAT考试A1010为例题)
  9. linux任务计划单独脚本能执行,linux中计划任务执行脚本
  10. 深入浅出,十年老司机告诉你移动直播如何秒开优化