赞
踩
目录
基本保持一月一更的状态了,太频繁反而没有质量。
最近也接入了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.<browser>.<option> | 创建指定浏览器的选项对象,例如webdriver.ChromeOptions() 。 |
webdriver.<browser>(executable_path='<path>') | 创建指定浏览器的驱动对象,并指定驱动程序的路径,例如webdriver.Chrome(executable_path='/path/to/chromedriver') 。 |
driver.get('<url>') | 打开指定的URL。 |
driver.find_element_by_<attribute>('<value>') | 根据给定的属性查找元素,并返回第一个匹配的元素,例如driver.find_element_by_id('my-id') 。 |
element.send_keys('<value>') | 向文本输入框中输入文本值。 |
element.click() | 单击元素。 |
element.text | 获取元素的文本内容。 |
element.get_attribute('<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()
'运行
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。