首页 > 编程语言 > 详细

Python—selenium模块(浏览器自动化工具)

时间:2019-05-13 20:24:27      阅读:134      评论:0      收藏:0      [点我收藏+]

selenium可以用来完成浏览器自动化相关的操作,写一些代码制定一些基于浏览器自动化的相关操作(行为动作),当代码执行后,浏览器就会自动触发相关的事件

安装方法:

  •   pip install selenium
  •   下载对应浏览器的驱动程序
  •   谷歌浏览器驱动下载地址:

https://chromedriver.storage.googleapis.com/index.html

https://npm.taobao.org/

  •   根据浏览器版本选择对应的驱动版本(网上查)

代码流程:

  • 导入模块:from selenium import webdriver
  • 实例化一个浏览器对象:webdriver.Chrome(executable_path=‘./chromedriver.exe‘) ,参数为浏览器驱动路径;
  • 写上要访问的网址:bro.get("https://xueqiu.com/")

浏览器相关操作:

  执行js实现滚轮向下

  移动到页面最底部(如果是动态加载的数据及第一次加载完成的地方):

    js = "window.scrollTo(0,document.body.scrollHeight)"

 

  定位标签,向标签里写参数 

tag_input = bro.find_element_by_id(‘kw‘)
tag_input.send_keys(‘人民币‘)

截屏

  bro.save_screenshot(‘1.png‘)

 

获取页面数据

获取动态加载的数据:bro.page_source 

  基于xpath获取标签:a_tag = bro.find_element_by_xpath("xpath表达式")

  点击事件:a_tag.click()    单击鼠标左键一下

 

 

网页的前进和后退

bro.back()   后退

bro.forward()   前进

技术分享图片网页前进后退代码

 

谷歌无头浏览器

如不想感知到浏览器操作,可让浏览器在后台操作 

技术分享图片
#谷歌无头浏览器
from selenium import webdriver
from time import sleep
from selenium.webdriver.chrome.options import Options
# 创建一个参数对象,用来控制chrome以无界面模式打开
chrome_options = Options()
chrome_options.add_argument(--headless)
chrome_options.add_argument(--disable-gpu)

bro = webdriver.Chrome(executable_path=./chromedriver.exe,options=chrome_options)
bro.get(https://www.baidu.com)
sleep(2)
bro.save_screenshot(1.png)
#标签定位
tag_input = bro.find_element_by_id(kw)
tag_input.send_keys(人民币)
sleep(2)

btn = bro.find_element_by_id(su)
btn.click()
sleep(2)

print(bro.page_source)
bro.quit()
谷歌无头浏览器代码

 

动作链

如果定位的标签存在于iframe标签之中,则必须经过switch_to操作在进行标签定位

技术分享图片
#动作链
from selenium import webdriver
from time import sleep
from selenium.webdriver import ChromeOptions
from selenium.webdriver import ActionChains  

option = ChromeOptions()
option.add_experimental_option(excludeSwitches, [enable-automation])

bro = webdriver.Chrome(executable_path=./chromedriver.exe,options=option)
url = https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable
bro.get(url=url)
#如果定位的标签存在于iframe标签之中,则必须经过switch_to操作在进行标签定位
bro.switch_to.frame(iframeResult)
source_tag = bro.find_element_by_id(draggable)
taget_tag = bro.find_element_by_id(droppable)
#创建一个动作连的对象
action = ActionChains(bro)
action.drag_and_drop(source_tag,taget_tag)
action.perform()
sleep(3)
# bro.quit()
动作链代码展示

 

 

 

 

  

 

  

 

 

 

  

Python—selenium模块(浏览器自动化工具)

原文:https://www.cnblogs.com/jayxuan/p/10836388.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!