爬虫案例1-爬取图片的三种方式之一:selenium篇(2)
@
前言
继使用requests库爬取图片后,本文使用python第三方库selenium来进行图片的爬取,后续也会使用同样是自动化测试工具DrissionPage篇来进行图片的爬取。
selenium简介
selenium是一个用于web应用测试的工具集,它可以直接运行在浏览器中,就像真正的用户在操作一样。它主要应用在自动化测试,web爬虫和自动化任务中。selenium提供了很多编程语言的接口,如java,python,c#等。这让开发者可以自己编写脚本来自动化web应用的测试。本文主要介绍selenium在web爬爬取图片的案例。
实战
- 话不多说,直接上源码
import requests # 数据请求模块
from selenium import webdriver # 浏览器驱动
from selenium.webdriver.common.by import By # 用来定位web页面上的元素
from time import sleep # 时间函数
import os # 文件管理模块
if not os.path.exists('./images'):
os.mkdir('./images')
driver = webdriver.Chrome() # 初始化webdriver实例
driver.get('https://pic.netbian.com/e/search/result/?searchid=147') # 打开网页
for num in range(0,14): # 多页爬取
data_img=driver.find_elements(by=By.XPATH, value='//div[@class="slist"]/ul/li/a/img') # 使用xpath定位到图片资源
for img in data_img: # 遍历
img_url=img.get_attribute('src') # 图片地址
response=requests.get(img_url) # 对图片地址进行请求
img_data=response.content # 获取到图片的二进制数据
with open('./images/'+img_url.split('/')[-1], 'wb') as f: # 持久化存储
f.write(img_data)
print("下载成功;",img_url.split('/')[-1])
print(f"第{num}页下载完成")
sleep(2) # 等待两秒
driver.find_element(by=By.XPATH, value='//*[@id="main"]/div[3]/a[11]').click() # 点击下一页
共勉
- 忙碌是治愈焦虑的良药
ps
- 有时候会报错可能会有以下几个原因
- 因为页面采用的懒加载技术,所以定位的时候要让元素在页面中显示出来才行,可以自己采用鼠标滚动事件
- 可以采用时间模块让页面中的元素全部加载后再去定位元素
博客
- 本人是一个渗透爱好者,不时会在微信公众号(laity的渗透测试之路)更新一些实战渗透的实战案例,感兴趣的同学可以关注一下,大家一起进步。
- 之前在公众号发布了一个kali破解WiFi的文章,感兴趣的同学可以去看一下,在b站(up主:laity1717)也发布了相应的教学视频。
爬虫案例1-爬取图片的三种方式之一:selenium篇(2)的更多相关文章
- 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引擎的三种方式,以下为详细内容: 大家好,我先简单介绍一下我自己,我是盛大游戏的技术总监徐峥.我今天想分享的主 ...
随机推荐
- SpringBoot实战:轻松实现接口数据脱敏
引言 在现代的互联网应用中,数据安全和隐私保护变得越来越重要.尤其是在接口返回数据时,如何有效地对敏感数据进行脱敏处理,是每个开发者都需要关注的问题.本文将通过一个简单的Spring Boot项目,介 ...
- Django 自定义创建密码重置确认页面
要实现上述功能,你需要修改模板文件以添加"忘记密码"链接,并创建新的视图函数来处理密码丢失修改页面.验证和密码修改.下面是你可以进行的步骤: 1. 修改模板文件 在登录页面的表单下 ...
- 基于Java+Spring+Vue仓储出入库管理系统设计和实现
\n文末获取源码联系 感兴趣的可以先收藏起来,大家在毕设选题,项目以及论文编写等相关问题都可以给我加好友咨询 系统介绍: 网络的广泛应用给生活带来了十分的便利.所以把仓储出入库管理与现在网络相结合,利 ...
- [oeasy]python005_退出游乐场_重启游乐场_系统态shell_应用态_quit
退出终端_重启游乐场_shell_quit Python 回忆 上次 了解了 python 进入了 python 游乐场 在游乐场 可以做 简单的计算 还可以做 乘方运算 数字特别大之后 游乐 ...
- AT_arc041_b 题解
洛谷链接&Atcoder 链接 本篇题解为此题较简单做法及较少码量,并且码风优良,请放心阅读. 题目简述 给定一个 \(N \times M\) 的矩阵,此矩阵的每一个元素都向上.下.左.右 ...
- java面试一日一题:垃圾回收器如何组合使用
问题:请讲下java中垃圾回收器如何组合使用 分析:该问题主要考察对垃圾回收器的深度理解 回答要点: 主要从以下几点去考虑, 1.垃圾回收器有哪些种类,每种的特点 2.组合使用怎么理解 在上篇文章&l ...
- linux性能资源分析工具
linux性能资源分析工具 1,top 2,ps 3,uptime 4,mpstat 5,pidstat 6,vmstat 7,iostat 8,netstat 9,lsof 10,sar / nmo ...
- P6764 [APIO2020] 粉刷墙壁
思路: 本质上能进行的操作就是我们算出从第 \(i\) 块砖开始,连续刷 \(M\) 块砖,是否有承包商可以刷出期望颜色. 那么设 \(f_i\) 表示 \([i,i+m-1]\) 是否合法,那么就变 ...
- 从.net开发做到云原生运维(六)——分布式应用运行时Dapr
1. 前言 上一篇文章我们讲了K8s的一些概念,K8s真的是带来了很多新玩法,就像我们今天这篇文章的主角Dapr一样,Dapr也能在K8s里以云原生的方式运行.当然它也可以和容器一起运行,或者是CLI ...
- 一个疑问:foundation models , 现在已经有了视觉的大模型也有了语言大模型,那么什么时候会有强化学习大模型,更准确的说什么时候会有强化学习的基础模型(foundation models)
一个疑问:foundation models , 现在已经有了视觉的大模型也有了语言大模型,那么什么时候会有强化学习大模型,更准确的说什么时候会有强化学习的基础模型(foundation models ...