当前位置: 首页 > news >正文

Python爬虫入门到实战(2)-selenium驱动浏览器

selenium库是一种用于Web应用程序测试的工具,它可以驱动浏览器执行特定操作,自动按照脚本代码做出单击、输入,打开,验证等操作,支持的浏览器包括IE、Firefox、Safari、Chrome、Opera等。而在办公领照下的城中如果经常需要使用浏览器操作某些内容,就可以使用selenium库来实现,与requests库不同的是,selenium库是基于浏览器的驱动程序来驱动浏览器执行操作的。且浏览器可以实现网页源代码的渲染,因此通过selenium库还可以轻松获取网页中渲染后的数据信息。

一.了解selenium库驱动浏览器的原理

浏览器是在浏览器内核基础之上开发而成的,浏览器内核主要负责对网页语法进行解释并渲染(显示)网页,例如360浏览器和Chrome浏览器都使用Chrome内核;而QQ浏览器使用IE内核,Safari浏览器使用Webkit内核。

虽然浏览器内核可以被selenium库驱动,但还是需要安装对应版本的浏览器内核驱动程序,以便于控制 Web浏览器的行为。每个浏览器都有一个特定的用于支持浏览器运行的WebDriver,被称为驱动程序(可以进 Aselenium库的官网进行下载,如果下载失败或无法匹配版本,还可以尝试下面介绍的相关方法)。下面以Microsoft Edge浏览器为例讲解:

1.安装驱动器

在这个网站上下载驱动:https://developer.microsoft.com/zh-cn/microsoft-edge/tools/webdriver/。 

 找到自己浏览器所对应的驱动器 

 将下载好的压缩包进行解压,并把下面这个文件放到所用的python文件夹下,并将一份复制到python-Script文件夹下

 

 至此就完成了驱动器的配置。

2.安装selenium库

在命令提示符下输入命令:

pip install selenium

安装完后可以使用以下命令查看库的信息:

pip show selenium

 二.驱动浏览器

1.驱动打开浏览器

在selenium库源代码文件下的webdriver中可查看所有支持的浏览器类型webdriver的使用形式如下:

webdriver.浏览器类型名()

 例如驱动Chrome浏览器的使用方法動
webdriver.Chrome(),驱动Opera浏览器的使用方法为webdriver.opera()。webdriver.Chrome()的使用形式如下:

webdriver.Chrome(executable_path='chromedriver',port=0,options=None)

功能:创建一个新的Chrome浏览器驱动程序。
参数executable_path:表示浏览器的驱动路径,默认为环境变量中的path,通常计算机中可能存在多个浏览器软件,当没有在环境变量中设置浏览器path时,可以使用参数options。
参数port: 表明希望服务运行的端口,如果保留为0,驱动程序将会找到一个空闲端口。
参数options:表示由类Options(位于selenium\webdriver\chrome\options.py)创建的对象,用于实现浏览器的绑定。

示例代码:

from selenium import webdriver
from selenium.webdriver.edge.options import Options
edge_options = Options()
edge_options.binary_location = r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
driver = webdriver.Edge(options=edge_options)
a=input()

第3、4行代码使用类Options创建了一个对象Edge_options,使用binary_location()方法绑定了浏览器。

第5行代码使用webdriver.Edge()设置options参数值为绑定Edge浏览器的对象Edge_options.执行代码后将会自动打开Edge浏览器,实现驱动浏览器的第一步。

2.加载网页

第1种get()方法。get()方法用于打开指定的网页。其使用形式如下:

get(url)

功能:在当前浏览器会话中加载url指向的网页。

from selenium import webdriver
from selenium.webdriver.edge.options import Options
edge_options = Options()
edge_options.binary_location = r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
driver = webdriver.Edge(options=edge_options)
driver.get('https://www.douyin.com/')
a=input()

第6行代码使用get()方法加载抖音,执行代码后将会自动启动 Edge浏览器并加载出相应网页,

 第2种,execute_script()方法。execute_ script()方法用于打开多个标签页,即在同一浏览器中打开多个网页。其使用形式如下: 

execute_script(script, *args)

 功能:打开标签页,同步执行当前页面中的JavaScript脚本。JavaScript是网页中的一种编程语言。
参数script:表示将要执行的脚本内容,数据类型为字符串类型。使用JavaScript语言实现打开一个新标签页的使用形式为"window.open('网站url','_blank');"

from selenium import webdriver
from selenium.webdriver.edge.options import Options
edge_options = Options()
edge_options.binary_location = r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
driver = webdriver.Edge(options=edge_options)
driver.get('https://www.douyin.com/')
driver.execute_script("window.open('https://www.shuyishe.com/','_blank');")
driver.execute_script("window.open('https://www.shuyishe.com/course','_blank');")
a=input()

第7~9行代码使用execute_script()方法 执行括号中的JavaScript脚本,打开的新标签页分别为抖音页面,数艺设的主页和数艺设的课程页面。

3.获取渲染后的网页代码

通过get()方法获取浏览器中的网页资源后,浏览器将自动渲染网页源代码内容,并生成渲染后的    内容,这时使用page_source()方法可以获取需渲染后的网页代码。

from selenium import webdriver
from selenium.webdriver.edge.options import Options
edge_options = Options()
edge_options.binary_location = r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
driver = webdriver.Edge(options=edge_options)
driver.get('https://www.douyin.com/')
print(driver.page_source)
a=input()

 第7行代码使用driver对象中的page_source()方法获取到的渲染后的源代码。

三小项目案例:实现批量下载网页中的资源

项目任务:实现批量下载人民邮电出版社官网中与Python相关的图书封面图片

项目实现步骤:

步骤1:获取人民邮电出版社官网中与Python相关的图书封面图片url。使用get()方法即可获取关键前在获取“python”的图书封面图片url。

步骤2,使用selenium库驱动浏览器渲染网页,并获取渲染后的网页代码。

步骤3:使用正则表达式过滤出图片的url

步骤4:将对应的url的图片下载到本地。

import re
import requests
from selenium import webdriver
from selenium.webdriver.edge.options import Options
edge_options = Options()
edge_options.binary_location = r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
driver = webdriver.Edge(options=edge_options)
driver.get('https://www.ptpress.com.cn/search?keyword=python')
a= re.findall('<img src="(.+?jpg)"></div>',driver.page_source)
i = 1
for url in a:r = requests.get(url)f2 = open('Python图书\\'+str(i)+'.jpg','wb')i += 1f2.write(r.content)f2.close()
a=input()

 第4-6行代码绑定了Edge浏览器,并驱动浏览器。

第7行代码使用get()方法打开Python类图书的网页,

第8行代码使用正则表达式过滤driver.page_source(渲染后的网页代码)中的图片url。可以观察到所有图书封面图片的标签为<img>,图片格式为.jpg,且下一个标签为</div>。因此使用正则表达式设计的过滤规则为'< img src=*(.+?jpg)"></div>'。过滤规则不是统一的,可以自行设计过滤规则。

9~15行代码使用requests库中的get()方法将过滤出来的url分别保存到相对路径“\Python图书”下。执行代码后将会自动下载网页中的图书封面图片到本地文件夹“\Python图书”中,

http://www.lryc.cn/news/591338.html

相关文章:

  • 静态住宅IP和节点有什么区别?哪种更适合你的需求?
  • Redis完全指南:从基础到实战(含缓存问题、布隆过滤器、持久化及Spring Boot集成)
  • redis速记
  • 【WPF】WPF 自定义控件之依赖属性
  • springboot打包二次压缩Excel导致损坏
  • 【Linux基础知识系列】第五十四篇 - 网络协议基础:TCP/IP
  • 深入GPU硬件架构及运行机制
  • 鸿蒙UI自动化测试框架Hypium的使用指南
  • springboot跨域问题 和 401
  • 解锁数据分析:从基础概念到核心指标的全面指南
  • 数据分析:从数据到决策的核心逻辑与实践指南
  • 电脑DLL错误修复dll微软运行库工具修复dll缺失找不到dll等问题,dll免费修复工具
  • Servlet概述
  • 基于arduino单片机汽车智能电子防碰撞装置设计
  • linux_线程同步
  • 一文掌握Harbor的配额管理和GC机制
  • 2025测绘程序设计国赛实战 | 泰森多边形算法C#实现
  • 华为云容器产品分析
  • tcp/udp调试工具
  • Python20 —— 二维数据的处理
  • 【C++类和对象解密】面向对象编程的核心概念(下)
  • Python 网络爬虫 —— 代理服务器
  • HTML前端性能优化完整指南
  • LeetCode 234:回文链表
  • Day04_C语言网络编程20250716_sql语言大全
  • Ollama使用指南-更改默认安装路径和Model路径(安装到非C盘)
  • 【计算机网络】第四章:网络层(上)
  • 【Linux-云原生-笔记】LVS(Linux virual server)相关
  • 云原生环境下的安全控制框架设计
  • MongoDB社区版安装(windows)