爬虫案例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引擎的三种方式,以下为详细内容: 大家好,我先简单介绍一下我自己,我是盛大游戏的技术总监徐峥.我今天想分享的主 ...
随机推荐
- css-渐变简约的登录设计
代码如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...
- 题解:AT_abc357_f [ABC357F] Two Sequence Queries
题意 维护一个数据结构,支持两个数列的区间求和,和查询区间内两数列各元素积的和. 分析 线段树万岁! 这道题要维护两个序列,所以线段树中要同时存储两个区间和.但还要在维护一个信息,是该区间内两序列元素 ...
- 手写数字识别-使用TensorFlow构建和训练一个简单的神经网络
下面是一个具体的Python代码示例,展示如何使用TensorFlow实现一个简单的神经网络来解决手写数字识别问题(使用MNIST数据集).以下是一个完整的Python代码示例,展示如何使用Tenso ...
- Centos7下安装配置最新版本Jenkins(2.452.3)
1.基础环境配置 1.1 服务器下载Jenkins安装包 下载地址:https://www.jenkins.io/download/ 下载命令:wget https://get.jenkins.io/ ...
- java面试一日一题:java内存区域
问题:请讲下java内存区域? 分析:该问题比较容易和jvm内存模型相混淆,内存模型说的是java的内存规范,规定的是多线程下访问主内存的规则:而内存区域,说的是java运行时的内存划分,换句话说就是 ...
- Python 实现行为驱动开发 (BDD) 自动化测试详解
在当今的软件开发领域,行为驱动开发(Behavior Driven Development,BDD)作为一种新兴的测试方法,逐渐受到越来越多开发者的关注和青睐.Python作为一门功能强大且易于使 ...
- Activity的创建
Activity的创建: 1.layout内写入相关代码 此处为显示的页面 2.Java内创建相关类写入代码 3.在清单内写入 快捷方法:直接完成上面步骤 layout: match_parent// ...
- Fiddler关于https抓包
一.Fiddler默认只抓取HTTP请求 Fiddler安装后默认只抓取HTTP请求,如要抓取HTTPS请求需要进行证书安装 二.Fiddler导出HTTPS证书 1.勾选HTTPS 工具栏Tools ...
- 3、SpringBoot2之配置文件
3.1.环境搭建 3.1.1.在project创建新module 3.1.2.选择maven 3.1.3.设置module名称和路径 3.1.4.module初始状态 3.1.5.引入springbo ...
- 【DataBase】局域网访问Windows系统下的MySQL8
Windows服务主机已经安装好MySQL8并且配置了用户密码 MySQL8更改用户密码: ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' ...