Splinter入门(二) Browser对象
Browser即是Splinter的浏览器对象,对splinter的操作,需要创建Browser对象,正如你自个访问网页,首先也是需要打开浏览器。
创建Browser对象
官网提供两种解决方案:
1 直接创建
from splinter import Browser
browser = Browser()
2 使用with关键字
from splinter import Browser
with Browser() as b:
# stuff using the browser
使用with方法创建,看看官网的解释:
This last example will create a new browser window and close it when the cursor reaches the code outside the with statement, automatically.
使用with
方法创建browser
对象会在with
块执行完后直接关闭(释放)browser对象。而使用第一种常规的方法是需要在代码中手动关闭browser.quit()
,这是通过类中的__enter__
和__exit__
内置方法实现的,具体可以参考python的with关键字。
Browser.visit()
Browser.visit()
用于浏览网页,并且该函数仅支持一个参数url
,如果需要访问认证的网页,则可以提供认证信息在url(类似get请求,将参数拼接在url中),例如:
browser.visit('https://www.baidu.com/') # 无需认证
browser.visit('http://username:password@cobrateam.info/protected') # 需认证,传递参数username和password
注意:这里需要加上http或者https协议,不然没法访问~例如:
Managing Windows(窗口管理)
在Splinter中,通过windows management interface
可以管理浏览器打开的窗口,窗口即是在浏览器中打开的多个标签页。
browser.windows # all open windows
browser.windows[0] # the first window
browser.windows[window_name] # the window_name window
browser.windows.current # the current window
browser.windows.current = browser.windows[3] # set current window to window 3
window = browser.windows[0]
window.is_current # boolean - whether window is current active window
window.is_current = True # set this window to be current window
window.next # the next window
window.prev # the previous window
window.close() # close this window
window.close_others() # close all windows except this one
以上摘自官网,可以看到这些API和我们真实操作浏览器都一样的,比如关闭当前窗口,关闭其他窗口。
Reload a page
重新加载页面,即是网页刷新操作:
browser.reload() # 重新加载页面
Navigate through the history
通过浏览器历史记录,可以访问前,后一个页面。例如:
browser.visit('https://www.baidu.com/')
browser.visit('https://www.csdn.net/')
browser.back() # 跳转回 https://www.baidu.com/
browser.forward() # 回到https://www.csdn.net/
Browser.title
获取当前page的标题:
browser.title
Browser.html
获取当前page的html代码:
browser.html
Browser.url
获取当前page的url:
browser.url
User-Agent
在visit访问网页时,发起http请求添加 User-Agent字段(博主用的是谷歌浏览器,对应的user_agent 字段可以在你使用的浏览器内network里面查看(常用于网页兼容和爬虫~~),而且需要加上chrome
,不然会报错,这是因为splinter默认使用火狐浏览器~):
b = Browser('chrome',user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4557.4 Safari/537.36") # 添加user_agent
综合示例
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author : cuntou0906
# @File : 01.py
# @Time : 2021/7/12 11:56
from splinter import Browser
from time import sleep # 为了更地显示过程,期间加了延时sleep()
browser = Browser('chrome') # 创建浏览器实例
browser.visit('https://www.csdn.net/') # 访问csdn
sleep(1)
browser.visit('https://www.baidu.com/') # 访问baidu
sleep(1)
browser.back() # 回到https://www.csdn.net/
sleep(1)
browser.forward() # 跳转回 https://www.baidu.com/
# 将关键词填入搜索框 通过wd这个名字找到对应的Elements
browser.fill('wd', 'splinter - python acceptance testing for web applications')
browser.find_by_id('su').click() # 通过id找到点击按钮,并点击
if browser.is_text_present('splinter.readthedocs.io'): # 对响应结果进行处理
print("Yes, the official website was found!")
else:
print("No, it wasn't found... We need to improve our SEO techniques")
sleep(1)
browser.reload() # 重新加载
print('Page tile:',browser.title) # title
print('Page URL:',browser.url) # URL
print('Page html:',browser.html) # html
b = Browser('chrome',user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4557.4 Safari/537.36") # 添加user_agent
# 这个user_agent 字段可以在你使用的浏览器内network里面查看(常用于网页兼容和爬虫~~)
b.visit('https://www.csdn.net/')
sleep(3)
browser.quit() # 关闭浏览器