Splinter入门(二) Browser对象

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协议,不然没法访问~例如:
Splinter入门(二) Browser对象

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()                              # 关闭浏览器
上一篇:使用Visual Studio Code遇到的一些问题


下一篇:【原来Python爬虫还可以这么玩!】python爬虫自动化实现B站自动登录