目录
前言
关于selenium
关于selenium的基本知识
学前准备
安装selenium
安装浏览器驱动程序
selenium的基本使用
进阶使用
语法
maximize_window最大化窗口
set_window_size指定窗口大小
back回退页面,forward前进页面
基本保持一月一更的状态了,太频繁反而没有质量。
最近也接入了chatGPT辅助学习,效率确实蛮高的,但是我也感受到了很大的依赖性。
Selenium是一个流行的自动化测试框架,也可以用于构建Web爬虫。它支持多种编程语言,如Python、Java、C#等,使得它可以适用于不同的开发环境和需求。
我们可以编写程序对浏览器进行控制操作,以进行自动化测试。
Selenium的主要功能是模拟浏览器操作,包括页面导航、表单填写、点击按钮等,从而实现自动化测试和Web爬取。
Selenium的核心组件是WebDriver,它提供了一组API来控制浏览器操作,并提供了多种浏览器驱动程序,如Chrome、Firefox、Safari等。
使用Selenium构建Web爬虫时,可以使用WebDriver来打开网页,解析HTML页面并提取需要的数据。此外,Selenium还提供了一些辅助工具,如Selenium IDE和Selenium Grid等,可以帮助开发者更方便地进行自动化测试和分布式测试。
在使用Selenium构建Web爬虫时,需要注意一些技巧和策略,以确保程序的健壮性和可靠性。例如,需要设置合适的等待时间、使用代理IP、避免频繁访问同一网站等。
最后,需要注意的是,使用Selenium构建Web爬虫也需要遵守相关的法律和规定,以保护用户数据的安全和隐私。
selenium为第三方库所以我们要使用pip命令在终端中安装Selenium库:
pip install selenium
安装了selenium之后,我们还要下载浏览器驱动程序,Selenium需要浏览器驱动程序来控制浏览器操作,我需要下载并安装特定浏览器的驱动程序。例如,如果我使用的是Chrome浏览器,则需要下载Chrome浏览器驱动程序,下载地址为:https://sites.google.com/a/chromium.org/chromedriver/downloads。
根据你目前浏览器的版本选择对应的浏览器版本进行下载,不对应浏览器版本的话可能会出现无法运行的结果。
# 导入selenium库
from selenium import webdriver
# 创建chrome浏览器
chrome = webdriver.Chrome(executable_path='./chromedriver.exe')
# 发送请求 打开百度搜索页面
chrome.get('http://www.baidu.com')
# 获取html
page = chrome.page_source
# 输出搜索结果
print(page)
# 关闭浏览器
chrome.quit()
首先我们创建了一个Chrome浏览器对象,并使用
get()
方法打开百度搜索页面。然后,我们使用chrome.page_sourcel来获取HTML,最后输出搜索结果。最后,使用quit()
方法关闭浏览器。
下面我们来看chatGPT给我们的例子:
from selenium import webdriver
# 创建Chrome浏览器对象
driver = webdriver.Chrome('/path/to/chromedriver')
# 打开百度搜索页面
driver.get("https://www.baidu.com/s?wd=selenium")
# 获取搜索结果
results = driver.find_elements_by_css_selector('.result')
# 输出搜索结果
for result in results:
print(result.text)
# 关闭浏览器
driver.quit()
在这个示例中,首先我们创建了一个Chrome浏览器对象,并使用
get()
方法打开百度搜索页面。然后,我们使用find_elements_by_css_selector()
方法查找搜索结果,并使用text
属性获取搜索结果的文本内容,最后输出搜索结果。最后,使用quit()
方法关闭浏览器。当然,这只是一个简单的示例,你可以根据自己的需要使用更多的Selenium API来实现更复杂的Web爬虫应用。
下面是一些常见 的selenium的基本语法和用法:
语法/用法 | 描述 |
---|---|
webdriver. |
创建指定浏览器的选项对象,例如webdriver.ChromeOptions() 。 |
webdriver. |
创建指定浏览器的驱动对象,并指定驱动程序的路径,例如webdriver.Chrome(executable_path='/path/to/chromedriver') 。 |
driver.get(' |
打开指定的URL。 |
driver.find_element_by_ |
根据给定的属性查找元素,并返回第一个匹配的元素,例如driver.find_element_by_id('my-id') 。 |
element.send_keys(' |
向文本输入框中输入文本值。 |
element.click() |
单击元素。 |
element.text |
获取元素的文本内容。 |
element.get_attribute(' |
获取元素的指定属性值,例如element.get_attribute('href') 。 |
driver.quit() |
关闭浏览器。 |
我们运行第一个selenium的时候发现并不是最大化的窗口,我们可以使用maximze_window()方法对其进行最大化处理,同时让浏览器休眠3秒,以模仿人为的操作,不进行频繁的点击。
from selenium import webdriver
from time import sleep
from selenium.webdriver.chrome.service import Service
def test_max():
# 创建一个浏览器
driver = webdriver.Chrome(executable_path='./chromedriver.exe')
# 打开页面
driver.get('https://www.baidu.com')
# 最大化窗口
driver.maximize_window()
# 睡眠三秒后关闭浏览器
sleep(3)
driver.quit()
除了最大化窗口意外,我们话可以使用set_window_size()方法来指定窗口的大小:
from selenium import webdriver
from time import sleep
from selenium.webdriver.chrome.service import Service
def test_size():
# 创建一个浏览器
driver = webdriver.Chrome(executable_path='./chromedriver.exe')
# 打开页面
driver.get('https://www.baidu.com')
# 设置成指定大小
driver.set_window_size(1000,600)
# 睡眠三秒后关闭浏览器
sleep(3)
driver.quit()
可以使用back和forward来控制页面的回退或者前进:
from selenium import webdriver
from time import sleep
from selenium.webdriver.chrome.service import Service
def test_forward_back():
# 创建一个浏览器
driver = webdriver.Chrome(executable_path='./chromedriver.exe')
# 打开页面
driver.get('https://www.baidu.com')
sleep(2)
driver.get('https://www.itbaizhan.com')
sleep(2)
# 后退到上一个页面
driver.back()
sleep(2)
# 前进
driver.forward()
# 睡眠三秒后关闭浏览器
sleep(3)
driver.quit()