西安将军山网站建设,asp网站免费源码,有意义网站,手机输入网址怎么输入文章目录 Selenium与Requests对比一、工作原理二、功能特点三、性能表现 下载对应驱动1.首先我们需要打开edge浏览器#xff0c;打开设置#xff0c;找到“关于Microsoft Edge”#xff0c;点击进入查看浏览器版本。2.查找版本之后#xff0c;搜索edge驱动下载#xff0c;… 文章目录 Selenium与Requests对比一、工作原理二、功能特点三、性能表现 下载对应驱动1.首先我们需要打开edge浏览器打开设置找到“关于Microsoft Edge”点击进入查看浏览器版本。2.查找版本之后搜索edge驱动下载进入下载页面选择对应的版本下载就可以。 使用Selenium爬取脚本实例1.导入必要的库和模块2.设置Edge浏览器的无头模式3.初始化Edge WebDriver4.访问网页5.等待页面元素加载6.查找并遍历列表元素7.关闭浏览器: Selenium爬虫与Requests在多个方面存在显著差异这些差异主要体现在它们的工作原理、功能特点、适用场景以及性能表现上。在某些情况下我们使用Selenium爬取文本内容更好这里我们先将其与Requests进行对比。 Selenium与Requests对比
一、工作原理
Requests
Requests是一个HTTP库用于发送各种HTTP请求如GET、POST等。它直接发送HTTP请求到服务器并接收服务器的响应不涉及浏览器环境的模拟。 SeleniumSelenium是一个自动化测试工具通过控制浏览器来模拟用户的各种行为如点击、滚动、填写表单等。它通过浏览器驱动程序与浏览器进行交互。
二、功能特点
Requests
简单、快速、轻量级易于使用和集成。主要用于发送HTTP请求和接收响应适用于静态网页内容的抓取。不具备浏览器自动化功能。
Selenium
功能强大能够模拟用户与浏览器的所有交互行为。适用于动态网页、单页面应用SPA以及需要用户交互的网页内容的抓取。
三、性能表现
Requests
由于不加载JavaScript或CSS等资源响应时间更短资源消耗更少。在处理静态网页内容时性能表现优异。
Selenium
需要加载完整的页面资源因此速度相对较慢。占用更多的CPU和内存资源特别是在处理多个浏览器实例或并发请求时。 综上所述Selenium爬虫与Requests在多个方面存在显著差异。选择哪个工具取决于具体的项目需求、网页类型以及性能要求。对于简单的静态网页内容抓取Requests可能是更合适的选择而对于复杂的动态网页、需要用户交互的网页或Web应用程序的抓取Selenium则更具优势。
下载对应驱动
在使用Selenium之前我们需要先下载对应浏览器的驱动程序如 Edge 驱动程序来与浏览器进行交互。下面我们讲解如何安装驱动。
1.首先我们需要打开edge浏览器打开设置找到“关于Microsoft Edge”点击进入查看浏览器版本。
图例
2.查找版本之后搜索edge驱动下载进入下载页面选择对应的版本下载就可以。
图例 下载完成之后将文件放在含有python的文件夹内注意一定要放在一个文件夹下这样我们就可以使用Selenium爬取脚本了。
使用Selenium爬取脚本实例
下面我们使用Selenium库和Edge浏览器通过Edge WebDriver来自动化访问网页并抓取数据的Python脚本。
1.导入必要的库和模块
import time# pip install selenium
# 下载对应版本的驱动 放在python文件下from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.edge.options import Optionstime用于在代码执行过程中添加延时。webdriver从selenium包中导入用于控制浏览器。By从selenium.webdriver.common.by中导入用于指定元素定位的方式如XPath、CSS选择器等。expected_conditions别名EC和WebDriverWait从selenium.webdriver.support和selenium.webdriver.support.ui中导入用于设置等待条件以便在元素可用之前暂停执行。Options从selenium.webdriver.edge.options中导入用于配置Edge浏览器的启动选项如设置为无头模式。
2.设置Edge浏览器的无头模式
if __name__ __main__:# 无头模式opt Options()opt.add_argument(--headless)创建Options实例并通过add_argument(“–headless”)设置浏览器在无头模式下运行即不显示浏览器界面。
3.初始化Edge WebDriver driver webdriver.Edge(optionsopt)使用webdriver.Edge(optionsopt)创建Edge WebDriver实例传入之前配置的选项opt。
4.访问网页 # 请求页面driver.get(https://101.qq.com/#/hero)使用driver.get(‘https://101.qq.com/#/hero’)访问指定的网页地址。
5.等待页面元素加载 # 强制等待time.sleep(10)# 等待某个元素加载完成WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH,//ul[classhero-list])))使用WebDriverWait和EC.presence_of_element_located等待页面上某个元素这里是类名为hero-list的ul元素出现。这是一种比time.sleep()更智能的等待方式因为它会等待直到条件满足元素出现或达到最大等待时间这里是10秒。
6.查找并遍历列表元素 li_list driver.find_elements(By.XPATH,//ul[classhero-list]/li)for li in li_list:img_url li.find_element(By.XPATH,div/div/img).get_attribute(src)hero_name li.find_element(By.XPATH,div/p).textprint(img_url,hero_name)使用find_elements方法通过XPath定位到ul[class‘hero-list’]下的所有li元素并将它们存储在li_list列表中。遍历li_list中的每个li元素对于每个元素
使用find_element和XPath定位到该li元素内的img标签并获取其src属性即图片URL。同样地定位到该li元素内的p标签并获取其文本内容即英雄名称。打印出图片URL和英雄名称。
7.关闭浏览器: driver.close()pass使用driver.close()关闭浏览器。 这段代码演示了如何使用Selenium和Edge WebDriver来自动化访问一个网页等待页面上的特定元素加载完成然后抓取该页面上特定列表项中的图片URL和文本内容。