爬虫案例1-爬取图片的三种方式之一:DrissionPage篇(3)
@
前言
继requests篇和selenium篇,本文是爬取图片的最后一个案例,利用了python第三方库DrissionPage来自动化爬取图片。当然,爬取图片肯定不止这三种方法,还有基于python的scrapy框架,基于node.js的express框架以及基于Java的webmagic框架等等。
DrissionPage介绍
DrissionPage和selenium相似,都是基于python的网页自动化工具。不过Drission库的结合了requests和Selenium的优势,既能控制浏览器交互,又能高效地收发数据包。它的主要特点是可以监听网络数据,它可以拦截并解析请求和响应数据包,方便用户进行调试和分析。
实战
话不多说,直接上源码
from DrissionPage import ChromiumPage # chromium内核浏览器
from time import sleep # 时间模块
from DrissionPage import SessionPage # 和requests库相似,用于html解析
browser = ChromiumPage() # 打开浏览器
browser.get('https://pic.netbian.com/e/search/result/?searchid=147') # 请求网址
img_list=browser.eles('css:.slist ul li') # 定位所有照片元素
for li in img_list:
try:
img_src=li.ele("css:a img").attr('src') # 获取图片的地址
# img_src=li.ele("css:a img").link # 获取图片的地址
img_name=li.ele('css:a b').text # 获取照片名字
img_name=img_src.split('/')[-1] # 以/为分割符分隔,取列表最后一个元素(照片命名)
save_path=r'./image1' # 照片保存地址
page = SessionPage()
res=page.download(img_src,save_path) # 图片下载
print(res,img_name,img_src)
except Exception as e:
print(e)
多页爬取只需要再加个点击事件和for循环即可,可以私信d我获取多页爬取的源码
共勉
- 先完成 后完美
博客
- 本人是一个渗透爱好者,不时会在微信公众号(laity的渗透测试之路)更新一些实战渗透的实战案例,感兴趣的同学可以关注一下,大家一起进步。
- 之前在公众号发布了一个kali破解WiFi的文章,感兴趣的同学可以去看一下,在b站(up主:laity1717)也发布了相应的教学视频。
爬虫案例1-爬取图片的三种方式之一:DrissionPage篇(3)的更多相关文章
- JS---DOM---元素创建的不同方式---三种方式,5个案例
元素创建-----为了提高用户的体验 元素创建的三种方式: 1. document.write("标签的代码及内容"); 2. 对象.innerHTML="标签及代码 ...
- 零基础学习java------30---------wordCount案例(涉及到第三种多线程callable)
知识补充:多线程的第三种方式 来源:http://www.threadworld.cn/archives/39.html 创建线程的两种方式,一种是直接继承Thread,另外一种就是实现Runnabl ...
- 【整理】Linux下中文检索引擎coreseek4安装,以及PHP使用sphinx的三种方式(sphinxapi,sphinx的php扩展,SphinxSe作为mysql存储引擎)
一,软件准备 coreseek4.1 (包含coreseek测试版和mmseg最新版本,以及测试数据包[内置中文分词与搜索.单字切分.mysql数据源.python数据源.RT实时索引等测 ...
- js学习-DOM之动态创建元素的三种方式、插入元素、onkeydown与onkeyup两个事件整理
动态创建元素的三种方式: 第一种: Document.write(); <body> <input type="button" id="btn" ...
- 在Linux安装配置Tomcat 并部署web应用 ( 三种方式 )
系统版本:centos6.5版本 java版本:1.7 一.准备工作 1.java -version 检查是否有java环境,没有则需要去安装并配置到环境变量中. 2.下载tomcat包,下载地址:h ...
- Spring 使用AspectJ的三种方式
Spring 使用AspectJ 的三种方式 一,使用JavaConfig 二,使用注解隐式配置 三,使用XML 配置 背景知识: 注意 使用AspectJ 的 时候 要导入相应的Jar 包 嗯 昨天 ...
- Spring中bean实例化的三种方式
之前我已经有好几篇博客介绍Spring框架了,不过当时我们都是使用注解来完成注入的,具体小伙伴可以参考这几篇博客(Spring&SpringMVC框架案例).那么今天我想来说说如何通过xml配 ...
- 微软BI 之SSIS 系列 - 数据仓库中实现 Slowly Changing Dimension 缓慢渐变维度的三种方式
开篇介绍 关于 Slowly Changing Dimension 缓慢渐变维度的理论概念请参看 数据仓库系列 - 缓慢渐变维度 (Slowly Changing Dimension) 常见的三种类型 ...
- php数组循环的三种方式
PHP 的遍历数组的三种方式:for循环.foreach循环.while.list().each()组合循环 PHP当中数组分为:索引数组[转换成json是数组]和关联数组[转换成json是对象] f ...
- 盛大游戏技术总监徐峥:Unity引擎使用的三种方式
在5月13日Unite 2017 案例分享专场上,盛大游戏技术总监徐峥分享了使用Unity引擎的三种方式,以下为详细内容: 大家好,我先简单介绍一下我自己,我是盛大游戏的技术总监徐峥.我今天想分享的主 ...
随机推荐
- Java-JSTL标签简化和替换jsp页面上的java代码
概念:JavaServer Pages Tag Library JSP标准标签库 作用:用于简化和替换jsp页面上的java代码 使用标签: 导入jstl相关jar包 引入标签库:taglib指令:& ...
- Windows在待机后重新进入桌面出现资源管理器无响应的解决方案
问题 在日常使用Windows操作系统的过程中,我们可能会遇到一种较为特殊的情况--在系统待机后重新激活桌面时,资源管理器出现无响应现象.这一问题不仅影响用户体验,还可能导致剪切板功能异常,进而影响到 ...
- Modbus转Profinet网关模块连PLC与流量计通讯案例
一.案例背景 在饮品加工厂中,会涉及到流量计的使用,然而达到对流量计的精准控制和数据采集需要用到PLC,由于PLC和流量计可能使用不同的通信协议(如Profinet和Modbus),造成两者不能自接进 ...
- Profinet转ModbusTCP网关模块连发那科机器人与DCS通讯
一.现场要求:发那科机器人作为服务器端,DCS作为客户端向发那科机器人发送读写请求,发那科机器人应答后DCS接收发那科机器人的数据,实现数据的传递. 二.解决方案:在不增加编程任务的前提下只需在DCS ...
- [oeasy]python0015_十六进制_hexadecimal_字节形态_hex函数
十六进制(hexadecimal) 回忆上次内容 上次数制可以转化 bin(n)可以把数字转化为 2进制 binary 接收一个整数(int) 得到一个二进制数形式的字符串 编辑 数字在 ...
- c++17
std::variant<std::string,int,float>://作为联合体 using va = std::variant<std::string, int, float ...
- APK包的加固手段收集(浅)
目录 防止APK被调试 加壳 代码混淆: 检测调试器: 使用反调试技术: 环境检测: 使用Native代码: 多层防护: 防止APK被篡改 签名校验: V1 签名机制 V2 签名机制 V3 签名机制 ...
- docker 容器挂载技术
创建和使用桥接网络 docker network create --driver bridge --subnet 192.168.13.0/24 --gateway 192.168.13.1 mqyn ...
- 【Vue】Re21 VueX 第二部分(Mutations)
一.Mutations携带参数处理 Store状态的更新唯一方式:提交Mutations Mutations包含两部分: 1.字符串的事件类型[TYPE] 2.一个回调函数[HANDLER] 该函数的 ...
- MySQL手动执行rollback,内部实现分析
-- 测试手动回滚操作 -- 1手动开启事务 START TRANSACTION -- 2执行更新操作语句 UPDATE FraBakNtuAnalysize SET IsDeleted = 0 WH ...