【Python】爬虫-----selenium操作Ⅱ

本文介绍了如何利用Selenium库进行网页全屏截图,并结合PIL库进行图片剪切,详细步骤包括定位网页元素、获取坐标、剪切保存。同时,讲解了Selenium执行JavaScript操作、获取页面源代码以及使用动作链进行各种交互操作的方法。适合于网页自动化测试和数据抓取的开发者参考。
摘要由CSDN通过智能技术生成

一、截取页面图片

selenium可以对页面进行截图并保存。

web.save_screenshot("web1.png")

如果要把截下来的图片剪切要怎么做呢,虽然它不是selenium的内容。处理图片我们需要PIL这个模块 pip install Pillow 。然后确定图片对应的左上角和右下角的坐标。

例如,在百度页面截取这个图片:

 1.获取图片xpath路径

code_img_ele =  web.find_element_by_xpath('//*[@id="s_lg_img"]')

2.获取图片下x,y坐标

location = code_img_ele.location

3.获取图片对应的长和宽

size = code_img_ele.size

4.获取图片左上角和右下角坐标(前两个int是获取左上角,后两个是获取右下角)

rangle = (
    int(location['x']),int(location['y']),int(location['x'] + size['width']),int(location['y'] + size['height'])
)

5.开始剪切

i = Image.open('web1.png')
code_img_name = 'code.png'
frame = i.crop(rangle) #剪切
frame.save(code_img_name)#保存

完整代码:

import time
from selenium.webdriver import Chrome
from PIL import Image

web = Chrome()
time.sleep(3)
web.get("https://www.baidu.com/")
web.save_screenshot("web1.png")
code_img_ele =  web.find_element_by_xpath('//*[@id="s_lg_img"]')
location = code_img_ele.location
size = code_img_ele.size
rangle = (
    int(location['x']),int(location['y']),int(location['x'] + size['width']),int(location['y'] + size['height'])
)

i = Image.open('web1.png')
code_img_name = 'code.png'
frame = i.crop(rangle)
frame.save(code_img_name)

二、执行js操作

web.execute_script('js指令')

三、获取页面源代码(包含动态加载的内容)

page = web.page_source

四、动作链

导入动作链模块

from selenium.webdriver import  ActionChains

实例化对象:

action = ActionChains(浏览器对象)

使用动作链:

action.动作方法(要执行动作的目标).perform()

动作方法:

单击click(self, on_element=None)鼠标单击动作,输入参数为一个元素,可以不输入
单击并保持click_and_hold(self, on_element=None)鼠标点击一个元素并保持不放,参数为一个元素
右击context_click(self, on_element=None)右击一个元素,参数为一个元素
双击double_click(self, on_element=None)双击一个元素,参数为一个元素
拖放(将一个元素拖至另外一个元素)drag_and_drop(self, source, target)source元素拖放至target元素处,参数为两个元素
拖放(将一个元素拖放至另外一个位置)drag_and_drop_by_offset(self, source, xoffset, yoffset)将一个source元素拖放至xoffset, yoffset处,参数为一个元素,两个数值距离(需为整形)
按下某个按键key_down(self, value, element=None)按下某个按键如ctrl,shift,alt,参数为一个按键和一个元素(可为空)
松开一个按键key_up(self, value, element=None)松开某个按键如ctrl,shift,alt,参数为一个按键和一个元素(可为空)
移动鼠标一段横纵距离move_by_offset(self, xoffset, yoffset)移动鼠标至指定的坐标,参数为两个数值(需为整形)
移动至某个元素move_to_element(self, to_element)移动鼠标至一个指定的元素,参数为一个元素
松开鼠标release(self, on_element=None)方法为松开鼠标,和拖放等一起使用
键盘输入send_keys(self, *keys_to_send)向一个元素输入一个字符串,需先找到该元素
键盘输入send_keys_to_element(self, element, *keys_to_send)向一个元素输入一个字符串,参数为一个元素和一个字符串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SamRol

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值