python+selenium控制浏览器窗口(刷新、前进、后退、退出浏览器)

python+selenium控制浏览器窗口(刷新、前进、后退、退出浏览器)
 
driver.属性值
 
 
 
1.driver.current_url:用于获得当前页面的URL
 
2.driver.title:用于**当前页面的标题
 
3.driver.page_source:用于**页面html源代码
 
4.driver.current_window_handle:用于**当前窗口句柄
 
5.driver.window_handles:用于**所有窗口句柄
 
 
 
1.driver.find_element*():定位元素,
2.driver.get(url):浏览器加载url。
 
实例:driver.get("http//:www.baidu.com")
3.driver.forward():浏览器向前(点击向前按钮)。
4.driver.back():浏览器向后(点击向后按钮)。
5.driver.refresh():浏览器刷新(点击刷新按钮)。
6.driver.close():关闭当前窗口,或最后打开的窗口。
7.driver.quit():关闭所有关联窗口,并且安全关闭session。
 
8.driver.maximize_window():最大化浏览器窗口。
9.driver.set_window_size(宽,高):设置浏览器窗口大小。
10.driver.get_window_size():**当前窗口的长和宽。
11.driver.get_window_position():**当前窗口坐标。
12.driver.get_screenshot_as_file(filename):截取当前窗口。
 
===================================================================================================================================
====================================================================================================================================
 
 
from selenium import webdriver
from time import sleep
 
url1='https://www.baidu.com' #需要打开的网址
driver = webdriver.Firefox() # 指定浏览器驱动
driver.get(url1) # 指定和打开浏览器
 
#---------------------------------------------------------------------------------------
 
print(driver.current_url) #查找当前浏览器的url :https://www.baidu.com/
 
print(driver.title) #**当前窗口信息(页面标题) :百度一下,你就知道
 
print(driver.name) #驱动浏览器的名称 :firefox
 
print('------------------------------------------------------')
 
print(driver.get_window_size()) #**浏览器的宽度和高度 :{'width': 1382, 'height': 744}
 
print(driver.get_window_position()) #**浏览器左上角坐标的X,Y值 :{'x': -8, 'y': -8}
 
print('------------------------------------------------------')
 
print('**目前浏览器的宽度和高度:')
 
driver.set_window_size(400,200) #设置浏览器的宽度和高度
 
print(driver.get_window_size()) #**浏览器的宽度和高度 :{'width': 400, 'height': 200}
 
sleep(5)
 
print('------------------------------------------------------')
 
 
driver.set_window_position(100,200) #设置浏览器左上角坐标的X,Y值
 
print(driver.get_window_position()) #**浏览器左上角坐标的X,Y值 :{'x': 100, 'y': 200}
 
sleep(5)
 
 
print('------------------------------------------------------')
 
 
driver.set_window_position(500,500)
 
print(driver.get_window_position()) #**浏览器左上角坐标的X,Y值 :{'x': 500, 'y': 500}
 
sleep(5)
 
 
print('------------------------------------------------------')
 
 
driver.maximize_window() #最大化浏览器
 
print(driver.get_window_size()) #**浏览器的宽度和高度 :{'width': 1382, 'height': 744}
 
print(driver.get_window_position()) #**浏览器左上角坐标的X,Y值 :{'x': -8, 'y': -8}
 
sleep(5)
 
#------------------------------------------------------------------------
 
 
driver.get(url2) #打开凤凰网
 
sleep(10)
 
driver.back() #后退到百度网页
 
sleep(10)
 
driver.forward() #前进到凤凰网页
 
sleep(10)
 
driver.refresh() #刷新当前页面
 
#-------------------------------------------------------------------------------------
 
driver.quit() #含义是:退出相关的驱动程序和关闭所有窗口
 
#driver.close() #用来关闭当前窗口,当有多个窗口被打开时,需要关闭某一个窗口时,可以用此方法
 
 
 
 
 
============================================================================================================================
=============================================================================================================================
 
执行结果:
 
 
 
 
 
Python Selenium实现控制Chrome通过chrome浏览器直接打开目标网站,然后直接抓取里面的前端代码,可以让我们不必分析、破解目标网站的接口加密规则,因为对于非目标网站的内部人员来说,这个工作可
Python | Selenium实现控制Chrome
 
 
https://npm.taobao.org/mirrors/chromedriver/
 
 
一. 如何实现(大致思路):
 
环境搭建(前提):
 
1.已有Python开发环境及Chrome;
 
2. 下载chromedriver:
 
下载地址:http://npm.taobao.org/mirrors/chromedriver/(若失效可自行百度chromedriver下载);
 
3. 安装Selenium:
 
方法:pip install selenium 等;
 
基本代码:
 
 
二. 踩坑(注意事项详述):
 
1. 下载chromedriver时首先确认自己chrome版本:帮助-关于Google Chrome;
 
 
2. chromedriver下载后需保证以下条件之一:
 
a. 下载后放在python.exe同一目录;
 
b. 将保存目录设置为环境变量(eg:E:\PyTools\chromedriver.exe设置为环境变量);
 
c. 代码中实现:
 
 
如若不按以上配置,则可能出现以下报错:selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH
 
个人理解:
 
Python完成安装后基本都会设置为环境变量,因此a、b可基本归为一类,当然Python环境未设置成环境变量或者个人电脑有其他设置另说。
关于c:a或b设置好后,系统会自行找到chromedriver并完成操作;a、b未设置,则需手动按c设置,使系统找到chromedriver并完成操作。
3. chrome是否为默认安装位置:
 
chrome浏览器为默认安装位置(默认C盘),则以上方法基本可以实现,如有问题,因个人是将chrome移动安装位置,无法踩坑,则需各位自行解决;
chrome浏览器非默认安装位置(a正确,b会出错):
a. 因为不在默认位置,所以需要在代码中手动配置chrome位置,按照这样配置,之后才能完成对chrome的控制:
 
 
若不按以上进行配置,会报以下错误:
 
selenium.common.exceptions.WebDriverException: Message: unknown error: cannot find Chrome binary
 
b. 如果按照以下方法配置,只可以完成将浏览器调用打开,之后会报错,无法实现对浏览器的控制:
 
 
报错为:selenium.common.exceptions.webDriverException: Message: Service D:\Google\Chrome\Application\chrome.exe unexpectedly exited. Status code was: 0
 
 
 
 
 
通过chrome浏览器直接打开目标网站,然后直接抓取里面的前端代码,可以让我们不必分析、破解目标网站的接口加密规则,因为对于非目标网站的内部人员来说,这个工作可没有那么简单。
 
首先要了解的是,WebDriver是一个开源工具,用于跨多个浏览器自动测试Web应用程序,它提供了导航到网页、用户输入、JavaScript执行等功能。
 
Python的Selenium库是WebDriver的Python语言实现,用于浏览器交互的自动化。使用WebDriver进行自动化操作比较麻烦的地方是,使用什么浏览器就需要下载相应的driver文件,即浏览器驱动:
 
Chrome驱动(Google):http://chromedriver.chromium.org
Chrome驱动(国内镜像):http://npm.taobao.org/mirrors/chromedriver/
Firefox驱动:https://github.com/mozilla/geckodriver/releases/
下面的内容使用的是Chrome驱动,Chrome驱动与Chrome浏览器有对应关系,具体映射关系可以在Chrome驱动目录下查看,但是最好的方法是更新Chrome至最新版本,再下载最新的Chrome驱动。
 
接下来我们在任意目录下创建一个tools123的文件夹,并把刚才下载的Chrome驱动放到这里来,再创建一个tools123.py的文件,在该文件下输入下面的代码:
 
from selenium import webdriver
from os import getcwd,sep
 
# 当前进程的工作目录
cwd = getcwd()
# 设置chrome驱动器
driver = webdriver.Chrome(f'{cwd}{sep}chromedriver')
# 设置超时时间
driver.set_page_load_timeout(13)
 
# 推出驱动并关闭所关联的所有窗口
driver.quit()
 
执行上面代码后,如果正常的话,电脑会打开一个Chrome浏览器窗口,然后又马上关闭了。下面我们可以试一下访问百度新闻并搜索关键词:
 
…………
from time import sleep
 
…………
…………
…………
 
# 访问
driver.get('http://news.baidu.com/')
# 等待几秒
sleep(3)
 
# 清空文本框的内容
driver.find_element_by_name('word').clear()
# 输入文本内容
driver.find_element_by_name('word').send_keys('百度')
# 点击按钮
driver.find_element_by_id("s_btn_wr").click()
 
# 等待几秒
sleep(3)
 
# 推出驱动并关闭所关联的所有窗口
driver.quit()
 
再执行一下代码,电脑打开Chrome浏览器窗口后,会访问百度新闻,然后输入“百度”,点击搜索按钮。接下来我们就可以爬页面的内容,不过我们还需要借助Python的Beautiful Soup库,它可以轻松从网页上抓取信息,提供用于迭代、搜索和修改解析树的功能。
 
下面我们就可以开始获取今天有关“百度”的热点新闻了:
 
…………
from bs4 import BeautifulSoup
 
…………
…………
…………
 
# 等待几秒
sleep(3)
 
# 获得网页内容
summaryPage = driver.page_source
# 解析HTML内容
summaryObj = BeautifulSoup(summaryPage, 'html.parser')
# 通过Class获取内容
summaryObjContent = summaryObj.find_all(attrs={'class':'c-title'})
 
for i in range(len(summaryObjContent)):
# 查找出一个a标签
aObj = summaryObjContent[i].find('a')
# 查a标签的href值
href = aObj['href']
 
 
 
 
 
 

posted on 2023-04-29 10:23  shuzihua  阅读(508)  评论(0编辑  收藏  举报

导航