周末没什么事,想温习一下以前学过的python爬虫,抓了一些图片,发现优点慢,于是改成了异步爬虫,用了几个异步的库

同步方法

import requests
from lxml import etree
from time import time
from selenium import webdriver
import os
from time import sleepheaders = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36 Edg/86.0.622.43",
}def preprocessing(browser):url = 'https://m.tuiimg.com/'browser.get(url=url)windows = browser.window_handlesa_arr = browser.find_elements_by_xpath('//*[@id="main"]/li/a')for image in a_arr:# 图片地址 https://m.tuiimg.com/meinv/2195/item_href = image.get_attribute("href")# # 图集id# images_id = item_href.split('/')[-2]# print(images_id)res = requests.get(url=item_href, headers=headers).contenttree = etree.HTML(res)total_text = tree.xpath('//*[@id="allbtn"]/text()')[0]# 图集总数量image_total = int(total_text.split('/')[1].replace(")", ""))# 图解名称images_name = tree.xpath('//*[@id="container"]/div[3]/h1/text()')[0]print(images_name)base_img_url = "/".join(tree.xpath('//*[@id="nowimg"]/@src')[0].split("/")[0:-1]) + "/"print(base_img_url)start_time = time()for i in range(1, image_total + 1):image_url = base_img_url + str(i) + ".jpg"saveImage(image_url,images_name + str(i) + ".jpg")print(images_name, "图集下载花费的时间是" + str(time() - start_time), "秒")def saveImage(image_url,images_name):file_path = "./妹子美图合集/"if not os.path.exists(file_path):os.mkdir(file_path)imag = requests.get(url=image_url, headers=headers).contentwith open(file_path + images_name, "wb") as fp:fp.write(imag)print(images_name,"保存成功")if __name__ == '__main__':chrome = webdriver.Chrome(executable_path='chromedriver.exe')preprocessing(browser=chrome)

下一组图,大概60s 于是就有了下面的代码

异步方法

import requests
import aiohttp
import asyncio
import aiofiles
from time import time
from lxml import etree
from selenium import webdriver
import os
from time import sleepheaders = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36 Edg/86.0.622.43",
}def preprocessing(browser):url = 'https://m.tuiimg.com/'browser.get(url=url)windows = browser.window_handlesa_arr = browser.find_elements_by_xpath('//*[@id="main"]/li/a')for image in a_arr:# 图片地址 https://m.tuiimg.com/meinv/2195/item_href = image.get_attribute("href")res = requests.get(url=item_href, headers=headers).contenttree = etree.HTML(res)total_text = tree.xpath('//*[@id="allbtn"]/text()')[0]# 图集总数量image_total = int(total_text.split('/')[1].replace(")", ""))# 图解名称images_name = tree.xpath('//*[@id="container"]/div[3]/h1/text()')[0]print(images_name)base_img_url = "/".join(tree.xpath('//*[@id="nowimg"]/@src')[0].split("/")[0:-1]) + "/"print(base_img_url)start_time = time()tasks = []for i in range(1, image_total + 1):# 耗时操作 异步处理tasks.append(saveImage(base_img_url + str(i) + ".jpg", images_name + str(i) + ".jpg"))loop = asyncio.get_event_loop()loop.run_until_complete(asyncio.wait(tasks))print(images_name, "图集下载花费的时间是" + str(time() - start_time), "秒")async def saveImage(image_url, images_name):print("准备下载", images_name)file_path = "./妹子美图合集1/"if not os.path.exists(file_path):os.mkdir(file_path)async with aiohttp.ClientSession(headers=headers) as session:async with session.get(url=image_url) as response:async with aiofiles.open(file_path + images_name, "wb") as afp:await afp.write(await response.content.read())print(images_name, "保存成功")if __name__ == '__main__':chrome = webdriver.Chrome(executable_path='chromedriver.exe')preprocessing(browser=chrome)

效率大概提升了5倍,还凑和…

把那个字符串换成正则还能再快点


image_total = int(re.search('([1-9]\\d+)|[2-9]', tree.xpath('//*[@id="allbtn"]/text()')[0]).group())base_img_url = re.sub('\\w.jpg', '', tree.xpath('//*[@id="nowimg"]/@src')[0])

Python 异步爬虫爬取图片相关推荐

  1. Python网络爬虫爬取图片

    环境: 我的是Linux系统 环境:python3.7.2 软件:Pycharm(或者直接用命令行操作也行) 进入正题: 本人是胡歌的粉,爬取一下豆瓣里的琅琊榜页面的一些图片,hhhhh 网址:htt ...

  2. python爬虫爬取图片无法打开_半小时入门python爬虫爬下网站图片,不能再简单了...

    阅读本文大约需要2分钟 本文旨在为没有爬虫基础的,偶尔想爬虫爬一下某个网站上的图片的初学者使用,如果你已经是对爬虫很熟悉了,下面依然有你感兴趣的东西. 我最近也才正儿八经学习了下爬虫,出于某种需要爬一 ...

  3. 【大学生课程实践】实操:使用Python爬虫爬取图片

    实操:使用Python爬虫爬取图片 参考链接: 源码部署 安装源码中的爬虫库 创建 images文件 参考链接: 本博客作为大佬博客学习笔记记录 参考链接:孩子说"你没看过奥特曼" ...

  4. 图片的批量下载 和 爬虫爬取图片数据集

    图片的批量下载 和 爬虫爬取图片数据集 1.图片的批量下载 1.图片的批量下载 数据集是深度学习的一切,没有数据集它什么也不是,现在你知道数据集很重要了吧 代码: ''' 项目名称:爬取公章数据 创建 ...

  5. 如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)

    前天给大家分享了如何利用Python网络爬虫爬取微信朋友圈数据的上篇(理论篇),今天给大家分享一下代码实现(实战篇),接着上篇往下继续深入. 一.代码实现 1.修改Scrapy项目中的items.py ...

  6. python爬电影_使用Python多线程爬虫爬取电影天堂资源

    最近花些时间学习了一下Python,并写了一个多线程的爬虫程序来获取电影天堂上资源的迅雷下载地址,代码已经上传到GitHub上了,需要的同学可以自行下载.刚开始学习python希望可以获得宝贵的意见. ...

  7. python朋友圈动态_如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)

    前天给大家分享了如何利用Python网络爬虫爬取微信朋友圈数据的上篇(理论篇),今天给大家分享一下代码实现(实战篇),接着上篇往下继续深入. 一.代码实现 1.修改Scrapy项目中的items.py ...

  8. python抓取朋友圈动态_如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)...

    原标题:如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下) 前天给大家分享了如何利用Python网络爬虫爬取微信朋友圈数据的上篇(理论篇),今天给大家分享一下代码实现(实战篇),接着上篇往 ...

  9. Python动态爬虫爬取京东商品评论

    Python 动态爬虫爬取京东商品评论 1. 概述 京东商城是Python爬虫初学者试手的经典平台,反爬虫程度较低,但评论采取了动态加载的方式,爬取京东商品评论是学习动态爬虫的一个极佳方法. 动态爬虫 ...

最新文章

  1. easyui messager 消息框 对话框
  2. Visual Studio插件
  3. BZOJ-1927-星际竞速-SDOI2010
  4. 信号扫描_微观世界扫描电子显微镜(SEM)
  5. 动手学深度学习(PyTorch实现)(十)--NiN模型
  6. 【须弥SUMERU】宜信分布式安全服务编排实践
  7. 为什么下载的时候是php文件,求助 为什么编的下载文件代码,打开后下的全是php文件...
  8. linux 比较内容,Linux命令比较文件内容
  9. 开源运维管理软件排名_企业运维监控平台架构设计与实现(ganglia篇)
  10. 加密电子邮件是最安全高效的工作通信方式
  11. 笔记本辐射与日常电器辐射对比
  12. 一点点读懂cpufreq(一)
  13. 【Eclipse IDEA】IDEA 导入 eclipse Web项目
  14. 阿里推出阿里云网盘APP,下载速度远超百度网盘
  15. 2020 年 7 月编程语言排行榜
  16. 什么是车联网,IoV(Internet of Vehicles)
  17. 嵌入式(二十):并行接口
  18. 自己家里的电脑架设传奇外网教程
  19. python初中数学建模培训_中学生数学建模训练营VIP班
  20. 基于Python的人脸识别考勤系统

热门文章

  1. 完全自主可控三维云CAD:CrownCAD便捷的命令搜索,快速定位所需命令具体位置。
  2. 一个逗比web前端的理想
  3. jacobi迭代法(C#实现)
  4. 基于SSM+MySQL+Layui+Echarts的酒店入住管理系统
  5. python大数据工程师证书_从事大数据工程师需要考证书么?
  6. chrome的手机端调试
  7. ben we_​Ben结婚 WE选手Ben女友个人资料微博照片介绍
  8. 2019年 Vue 组件库大评测 Element, iView, HeyUI, Ant Design Vue
  9. 2023年微单相机市场电商数据分析(京东数据查询分析)
  10. 【刷题记录11】Java工程师丨字节面试真题(五)