白山网站制作,福州百度网站快速优化,建筑网2016农村别墅图大全,手机网站客户端设计与实现背景
最近一段时间我会重新开一个关于selenium的专题#xff0c;由浅入深的给大家讲一下selenium#xff0c;同时回顾一下之前学的内容#xff0c;selenium可以实现模拟登录#xff0c;动态数据获取#xff0c;获取动态cookie等等#xff0c;还有可以写一些抢p的脚本…背景
最近一段时间我会重新开一个关于selenium的专题由浅入深的给大家讲一下selenium同时回顾一下之前学的内容selenium可以实现模拟登录动态数据获取获取动态cookie等等还有可以写一些抢p的脚本点到为止步入正题。
简介
selenium
- 是一种浏览器自动化的工具所谓的自动化是指我们可以通过代码的形式制定一系列的行为动作然后执行代码这些动作就会同步触发在浏览器中即浏览器模拟人的执行。
环境安装
pip install selenium
conda install selenium下载浏览器驱动程序 http://chromedriver.storage.googleapis.com/index.html 查看驱动和浏览器版本的映射关系 http://blog.csdn.net/huilan_same/article/details/51896672
如果大家chrome浏览器版本太高又不好降级建议大家看一下这篇博客【笔记】chromedriver下载与安装方法_谷歌浏览器驱动_逸峰轻云的博客-CSDN博客
常用函数
请求发送
driver.get(网站) 驱动打开一个网站
driver.quit()# 关闭浏览器驱动创建
Selenium支持非常多的浏览器如Chrome、Firefox、Edge等.另外也支持无界面浏览器。主要使用Chrome浏览器.
driver webdriver.Chrome(r路径) 实例化一个浏览器对象
browser webdriver.Firefox()
browser webdriver.Edge()
browser webdriver.PhantomJS()
browser webdriver.Safari()定位元素 webdriver 提供了一系列的元素定位方法常用的有以下几种 driver.find_element_by_xpath() # 根据xpath对网页进行解析
find_elements_by_link_text() # 根据超链接内容进行定位
find_element_by_id( ) # 根据标签id属性值定位
find_element_by_tag_name() # 根据标签名定位
find_element_by_name() # 根据其name属性值定位 元素定位用的最多的是xpath那个大家可以去学一下xpath的语法。
页面交互
Selenium可以驱动浏览器来执行一些操作也就是说可以让浏览器模拟执行一些动作。
send_keys()#发送关键字
clear() # 清空文字
click() # 点击按钮执行js
对于某些操作Selenium API并没有提供。比如下拉进度条它可以直接模拟运行JavaScript此时使用execute_script()方法即可实现。
execute_script() #执行js# 拉到顶部
def scroll_top():
js “var qdocument.documentElement.scrollTop0”
return d.execute_script(js)#拉到底部
window.scrollTo (0, document.body.scrollHeight)案例实战
效果展示1
from selenium import webdriver
from time import sleep# 后面是你的浏览器驱动位置记得前面加r,r是防止字符转义的
# 路径写你下载的驱动的位置(建议使用相对路径)
driver webdriver.Chrome(r./chromedriver)
# 用get打开百度页面
driver.get(http://www.baidu.com)
# 等待三秒 观察效果
sleep(3)
# 关闭浏览器
driver.quit()效果展示2
要求实现输入python自动跳转到之后的页面
from selenium import webdriver
from time import sleep# 后面是你的浏览器驱动位置记得前面加r,r是防止字符转义的
driver webdriver.Chrome(rD:\Downloads\xx\chromedriver-win64\chromedriver.exe)
# 用get打开百度页面
driver.get(http://www.baidu.com)
# 找到输入框
shurudriver.find_element_by_id(kw)
shuru.send_keys(python)
# 输入关键字sleep(3)
# # 找到确定按钮
buttondriver.find_element_by_xpath(//*[idsu])
button.click()# sleep(3)# # 关闭浏览器
# driver.quit()效果展示3
要求对京东网站输入购买物品关键字后同时注入js脚本滑倒最底部。
要滑动网页到最低侧你可以使用 JavaScript 中的 scrollTo 方法。以下是一个示例代码可以在网页加载完成后自动滑动到最低侧
window.onload function() {// 获取文档的高度var docHeight document.documentElement.scrollHeight;// 滑动到最低侧window.scrollTo(0, docHeight);};// 滑动到最顶部
window.scrollTo(0, 0);path rD:\Downloads\xx\chromedriver-win64\chromedriver.exefrom selenium import webdriver
from time import sleep# 创建一个浏览器对象executable_path指定当前浏览器的驱动程序
bro webdriver.Chrome(executable_pathpath)# 浏览器的请求发送
bro.get(https://www.jd.com/)# 标签定位: 调用find系列的函数进行标签定位
search_box bro.find_element_by_xpath(//*[idkey])# 节点交互
search_box.send_keys(Apple14) # 向指定标签中录入内容
sleep(2)btn bro.find_element_by_xpath(//*[idsearch]/div/div[2]/button/i)
btn.click() # 点击按钮
sleep(2)# 使用execute_script方法注入JavaScript代码滑动到最底部
bro.execute_script(window.scrollTo(0, document.documentElement.scrollHeight))
sleep(5)# 关闭浏览器
bro.quit()扩展
扩展实现控制滑动的速度
path rD:\Downloads\xx\chromedriver-win64\chromedriver.exefrom selenium import webdriver
from time import sleep# 创建一个浏览器对象executable_path指定当前浏览器的驱动程序
bro webdriver.Chrome(executable_pathpath)# 浏览器的请求发送
bro.get(https://www.jd.com/)# 标签定位: 调用find系列的函数进行标签定位
search_box bro.find_element_by_xpath(//*[idkey])# 节点交互
search_box.send_keys(Apple14) # 向指定标签中录入内容
sleep(2)btn bro.find_element_by_xpath(//*[idsearch]/div/div[2]/button/i)
btn.click() # 点击按钮
sleep(2)# 获取页面高度
page_height bro.execute_script(return document.documentElement.scrollHeight)# 设置每次滑动的距离和间隔时间
scroll_distance 200 # 每次滑动的距离
scroll_interval 0.1 # 每次滑动的间隔时间秒# 逐步滑动页面
current_height 0 # 当前滑动的高度
while current_height page_height:bro.execute_script(fwindow.scrollBy(0, {scroll_distance});) # 滑动指定距离sleep(scroll_interval) # 等待一段时间current_height scroll_distance # 更新当前滑动的高度# 关闭浏览器
bro.quit()建议大家将这段代码保存下来实现慢慢滑动
# 获取页面高度
page_height bro.execute_script(return document.documentElement.scrollHeight)# 设置每次滑动的距离和间隔时间
scroll_distance 200 # 每次滑动的距离
scroll_interval 0.1 # 每次滑动的间隔时间秒# 逐步滑动页面
current_height 0 # 当前滑动的高度
while current_height page_height:bro.execute_script(fwindow.scrollBy(0, {scroll_distance});) # 滑动指定距离sleep(scroll_interval) # 等待一段时间current_height scroll_distance # 更新当前滑动的高度今天的分享就到这里啦