当前位置: 首页 > ops >正文

selenium后续!!

小项目案例:实现批量下载网页中的资源

根据15.3.2小节中的返回网页内容可知,用户只有获取了网页中的图片url才可以将图片下载到*在使用selenium库渲染网页后,可直接通过正则表达式过滤出指定的网页图片,从而实现批量下载接下来以此为思路来实现一个小项目案例。

项目任务
实现批量下载人民邮电出版社官网中与Python相关的图书封面图片。

项目实步骤

步骤1,获取人民邮电出版社官网中与Python相关的图书封面图片url。使用get()方法即可获取“python”的图书封面图片url。

步骤2,使用selenium库驱动浏览器渲染网页,并获取染后的网页代码

步骤3,使用正则表达式过滤出图片的ur1。

步骤4,使用15.3.2小节的返回网页内容中的方法将对应ur1的图片下载到本地

项目实现代码

from selenium import webdriverfrom selenium,webdriver chrome,options import optionsimport requestsimport rechrome_options = Options ()chrome_options,binary_location = r"c:\program Files\Google\chrome\Application\chrome.exe"driver = webdriver.Chrome(options=chrome_options)driver.get('https://www.ptpress.com.cn/search?keyword=python')a = re.findall('<img src="(.+?jpg)"></div>',driver.page source)i=1for url in a:r = requests.get(url)f2 = open('.\\Python图书\\'+str(i)+'.jpg','wb')i += 1f2.write(r.content)f2.close()

第4~6行代码绑定了Chrome浏览器,并驱动浏览器
第7行代码使用get()方法打开Python类图书的网页,如图15-36所示。
第8行代码使用正则表达式过滤driver,page_source(渲染后的网页代码)中的图片url。如图15-36所示可以观察到所有图书封面图片的标签为<img>,图片格式为.jpg,且下一个标签为</div>。因此使用正则表达式设计的过滤规则为'<img src="(.+?jpg)"></div>’。过滤规则不是统一的,读者可以自行设计过滤规则。第9~15行代码使用requests库中的get()方法将过滤出来的ur1分别保存到相对路径“\Python图书”下。执行代码后将会自动下载网页中的图书封面图片到本地文件夹“\Python图书”中,如图15-37所示。

此项目案例介绍了一个通用的下载网页资源的方法,读者掌握此方法后即可实现批量下载大部分网站中的图片、音乐、视频等资源文件。

获取和操作网页元素

获取网页中的指定元素

1获取标签中的图片url使用了正则表达式的方式进行过滤,而WebDriver对象中也提供了大量用于获取网页指定元素的方法.

在获取了网页中的某个元素后,可以使用以下方法对此元素进行相应操作。

tag-name()方法:获取元素的名称。
text()方法:获取元素的文本内容。
click()方法:单击此元素。
submit()方法:提交表单。
send_keys()方法:模拟输入信息。
size()方法:获取元素的尺寸。

在元素中输入信息

send_keys()方法可以实现在元素中输入信息,例如在窗口标签中输入信息。其使用形式如下:

send keys(*value)

参数value:表示需要输入的字符串信息。
示例代码(在人民邮电出版社官网的搜索框中输入“Python”):

from selenium import webdriverfrom selenium.webdriver.chrome.options import Optionsfrom selenium.webdriver.common.keys import Keyschrome options = Options()chrome options.binary location = r"c:\Program Files\Google\chrome\Application\chrome.exe"driver = webdriver.Chrome(options=chrome options)driver.get('https://www.ptpress.com.cn/')driver fnd element by tag name ("input").send keys ("Python" )

第8行代码使用find_element_by_tag_name()方法找到标签名为input的元素(通过网页源代码可知搜索框的标签名为input)。获取到标签后使用send_keys()方法实现在搜索框内输入字符串"Python"。

获取元素的方法比较多,读者可按照不同的方法灵活实现。实现在搜索框中输入信息的代码程序后,还可以模拟用户的按键操作,其使用方法为在字符串后面继续增加按键转义字符串信息。

示例代码:

from selenium import webdriverfrom selenium,webdriver,chrome.options import Optionsfrom selenium,webdriver,common.keys import Keyschrome options =Options()chrome_options.binary_location = r"C:\Program Files\Google\chrome\Application\chrome,exe"driver=webdriver.Chrome(options=chrome options)driver.get('https://www.ptpress.com.cn/')driver.find element by tag name("input").send keys ("Python"+ KeyS .RETURN)

示例代码在上二示例代码的基础上只对第8行微了修改。第8行代码在send_keys()方法电行KPyS.RETURN,KeyS RETURN表示技E中谈值来源于第3行代码导入的类Keys,类Kev建。能义了大部分按键的转义字符串。下面展示ySpenium库官方源代码中对类Keys的定义,根据定*司知KeyS.RETURN的值为转义字符串八ue006msend_keys()中写入的字符串信息为"pythoue006"。

类Keys的定义:

Elass Keys (object):
非甘群Set of special keys codes.gn#
NULL = *\ue000'
CANCEL=\ue001'#^控制键
HELP =ue002'
BACKSPACE =\ue003'
BACK SPACE = BACKSPACE
TAB =\ue004'
CLEAR =\ue005'
RETURN =\ue006'ENTER =\ue007'
SHIFT =\ue008'LEFT SHIFT = SHIFTCONTROL =\ue009'LEFT CONTROL=CONTROLALT =\ue00a'LEFT ALT = ALTPAUSE =\ue00b'ESCAPE =\ue00cSPACE =\ue00d'PAGE UP=\ue00e'PAGE DOWN=\ue00f'亻状到篚剁钭滹会盹玀摊跑=\ue010'HOME =\ue011'LEFT =\ue012'ARROW LEFT = LEFTUp ='\ue013'ARROW UP = UPRIGHT =\ue014'ARROW RIGHT = RIGHTDOW =\1e015!INSERT =
DELETE = '\ue017
SEMICOLON =\ue018'
EQUALS =\ue019'
#数字键NUMPAD0 =\ue0la'
NUMPAD1 =\ue01b'
NUMPAD2=\ue0lc
NUMPAD3=\ue0ld'
NUMPAD4= \ue0le'
NUMPAD5\ue0lf
NUMPAD6'\ue020'三
NUMPAD7 =\ue021'
NUMPAD8=\ue022'
NUMPAD9 =\ue023'
MULTIPLY =\ue024
ADD =\ue025'
SEPARATOR =ue026
SUBTRACT =\ue027'
DECIMAL =\ue028
DIVIDE =\ue029
F1 =\ue031'#功能键
F2 =ue032'
F3 =\ue033'
F4=\ue034'
F5 =\ue035'
F6 = \ue036'
F7 =\ue037'
F8=\ue038'
F9=\ue039'
F10 =\ue03a'
F11 =\ue03b'
F12 =\ue03c'
META =\ue03d'
COMMAND=\ue03d'

小项目案例:实现上传图片

项目任务泰现在百度识图官网中上传一张图片
项目实现代码

from selenium import webdriver
from selentan wendrtyer chrome,options import optlons
chrome_options = options()
crome options binary_location = r"c:\program fileslGoogleichromevpplleationichrome.exe
driver = webdriver,chrome (options=chrome optint)
driver.get('百度识图主页的网址”
input element = driver.find element by _name('file,)
input element.send_keys(r":\书代码\识图,jP)

http://www.xdnf.cn/news/15677.html

相关文章:

  • 进入当前正在运行的 Docker 容器
  • 【不用break退出循环】2022-1-25
  • 关于一个引力问题的回答,兼谈AI助学作用
  • 推荐算法召回:架构理解
  • 【PTA数据结构 | C语言版】斜堆的合并操作
  • Android 应用保活思路
  • 【C语言】深入理解柔性数组:特点、使用与优势分析
  • 【c++】STL-容器 list 的实现
  • 掌上医院微信小程序平台如何对接医保在线支付?
  • java前端基础--HTMLCSS、JavaScript、Vue、Ajax
  • 网安-API-crAPI
  • 如何下载并安装AIGCPanel
  • pdf格式怎么提取其中一部分张页?
  • 商汤将发布日日新6.5大模型及具身智能平台该咋看?
  • 计算机视觉与机器视觉
  • k8s:利用kubectl部署postgis:17-3.5
  • 【机器学习深度学习】什么是 GGUF?
  • 游戏盾在非游戏行业的应用:跨界守护网络安全的新利器
  • 计算机“十万个为什么”之跨域
  • [QOI] qoi_desc | qoi_encode | qoi_decode
  • WEB安全架构
  • 【Python】LEGB作用域 + re模块 + 正则表达式
  • 【PTA数据结构 | C语言版】左堆的合并操作
  • 加速度计和气压计、激光互补滤波融合算法
  • IDEA插件离线安装
  • 反序列化漏洞3-反序列化漏洞讲解演示
  • 5W8-3D牢游戏超级大集合[2012年6月] 地址 + 解压密码
  • 智慧后厨检测算法构建智能厨房防护网
  • 瀚高数据库开启Oracle兼容模块
  • 私有服务器AI智能体搭建配置选择记录