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

如何发布网站到域名百度搜索引擎优化的推广计划

如何发布网站到域名,百度搜索引擎优化的推广计划,网站建设 总体目标,哪家公司建的沂南体育馆规划图Selenium 4 教程:自动化 WebDriver 管理与 Cookie 提取 本教程旨在讲解 Selenium 4 在自动化项目中的两个实用技术: 自动化 WebDriver 管理:通过 webdriver-manager 库,实现 chromedriver 的自动下载、配置和版本匹配,…

Selenium 4 教程:自动化 WebDriver 管理与 Cookie 提取

本教程旨在讲解 Selenium 4 在自动化项目中的两个实用技术:

  1. 自动化 WebDriver 管理:通过 webdriver-manager 库,实现 chromedriver 的自动下载、配置和版本匹配,避免手动操作。
  2. Cookie 提取与复用:利用 Selenium 完成浏览器中的手动登录,然后提取会话 Cookie,并将其用于 requests 库,以执行后续的 API 请求。

以下内容将基于提供的代码范例,对这两个技术点的实现方式进行拆解和说明。

1. 环境准备

在开始之前,需要安装项目所需的 Python 库。可以通过以下命令进行安装:

pip install selenium webdriver-manager requests pandas openpyxl
  • selenium: 浏览器自动化框架。
  • webdriver-manager: 用于自动化管理 WebDriver。
  • requests: 用于发送 HTTP 请求。
  • pandas & openpyxl: 用于数据处理和写入 Excel 文件。

2. 自动化 WebDriver 管理

2.1 问题背景

在使用 Selenium 时,WebDriver(如 chromedriver)的版本必须与本地安装的浏览器版本严格对应。传统方法需要开发者手动下载并指定 WebDriver 的路径,当浏览器自动更新后,脚本便会因版本不匹配而失效,维护成本较高。

2.2 解决方案与原理

webdriver-manager 库解决了此问题。其工作原理如下:

  1. 在脚本运行时,自动检测本地 Chrome 浏览器的版本。
  2. 根据检测到的版本,从官方源下载对应的 chromedriver
  3. 将下载的驱动程序缓存至本地特定目录。后续运行时,若版本无变化,则直接使用缓存,提高了执行效率。
  4. 将驱动程序的路径提供给 Selenium 的 Service 对象,完成无缝集成。
2.3 代码实现

以下是从范例代码中提取的关键部分,用于初始化一个能自动管理驱动的 WebDriver 实例。

# 1. 导入相关模块
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options# 2. 在方法中实现初始化
def _get_cookies_with_selenium(self):# ... 其他配置,如 Optionschrome_options = Options()chrome_options.add_argument("--start-maximized")# 3. 核心实现:创建 Service 对象并初始化 WebDriver# ChromeDriverManager().install() 会自动处理驱动的下载和缓存service = Service(ChromeDriverManager().install())# 将创建的 service 实例传递给 webdriver.Chromedriver = webdriver.Chrome(service=service, options=chrome_options)# ... 后续浏览器操作

代码讲解:

  • 在 Selenium 4 中,推荐使用 Service 对象来管理 WebDriver 服务。
  • ChromeDriverManager().install()webdriver-manager 库的核心函数。它执行了上文提到的检测、下载、缓存等一系列自动化操作,并返回驱动程序的本地文件路径。
  • Service(path) 通过这个路径创建了一个驱动服务实例。
  • 最后,在 webdriver.Chrome() 的构造函数中,通过 service 参数传入该实例。这取代了旧版本中使用的 executable_path 参数。

通过这种方式,代码便具备了跨环境、自适应浏览器版本的能力。


3. 登录会话保持:提取并使用 Cookie

3.1 应用场景

对于包含复杂登录验证(如滑块验证码、扫码登录、短信验证)的网站,完全通过代码模拟登录流程非常困难。此时,可以采用人机结合的策略:由人工完成登录,程序接管后续的会话。

3.2 方法流程

该方法的执行流程清晰,分为以下几步:

  1. 启动浏览器:使用 Selenium 启动一个浏览器实例,并导航至目标网站的登录页面。
  2. 用户手动登录:脚本通过 input() 函数暂停执行,等待用户在浏览器窗口中完成登录操作。
  3. 提取 Cookie:用户登录成功后,在脚本控制台按下回车键,脚本继续执行。此时,通过 driver.get_cookies() 方法获取当前会话的所有 Cookie。
  4. 关闭浏览器:Cookie 获取成功后,Selenium 的任务完成,关闭浏览器以释放系统资源。
  5. 复用 Cookie:将获取的 Cookie 添加到 requests.Session 对象中。之后,所有通过此 Session 对象发起的请求都将携带登录凭证,从而可以访问需要登录才能查看的数据接口。
3.3 代码实现

步骤一:使用 Selenium 获取 Cookie

此部分代码负责引导用户登录并抓取 Cookie。

def _get_cookies_with_selenium(self):# ... (初始化 driver 的代码见上一节) ...# 导航到登录页driver.get("https://www.zhipin.com/web/user/?ka=header-login")# 打印提示信息,并使用 input() 阻塞程序,等待用户操作print("\n【请手动登录】浏览器已打开,请在浏览器中完成扫码登录。")print("【重要】登录成功后,请不要关闭浏览器,回到本控制台,按 Enter 键继续...\n")input()# 用户确认后,从浏览器获取 cookieslogging.info("正在获取登录后的Cookies...")cookies = driver.get_cookies()# 关闭浏览器driver.quit()return cookies

代码讲解:

  • input(): 该函数是实现人机交互的关键,它会暂停程序执行,直到用户在控制台按下回车键。
  • driver.get_cookies(): Selenium 的标准方法,返回一个列表,其中每个元素都是一个代表 Cookie 的字典。

步骤二:将 Cookie 应用于 requests

获取到 Cookie 后,需要将其加载到 requests 的会话中。

def run(self):# 1. 调用上述方法获取 cookiesselenium_cookies = self._get_cookies_with_selenium()if not selenium_cookies:logging.error("未能获取到Cookies,程序终止。")return# 2. 遍历 cookie 列表,并添加到 requests.Session 对象中# self.session 是一个提前初始化好的 requests.Session() 实例for cookie in selenium_cookies:self.session.cookies.set(cookie['name'], cookie['value'])logging.info("Cookies已成功加载到请求会话中。")# 3. 后续所有使用 self.session 的请求都将自动携带这些 cookie# 例如:response = self.session.get(api_url, params=params)

代码讲解:

  • requests.Session(): 创建一个会话对象,它可以在多次请求之间保持 Cookie。
  • self.session.cookies.set(name, value): requests 库设置 Cookie 的标准方法。由于 driver.get_cookies() 返回的每个 Cookie 是一个字典,我们从中提取 namevalue 两个关键字段进行设置。

4. 总结

本教程介绍了两种提升 Selenium 项目效率和稳定性的技术:

  1. 自动化 WebDriver 管理:通过 webdriver-manager 库,使脚本能够自动适应浏览器版本,降低了维护成本。
  2. Cookie 提取与复用:通过结合人工登录和程序提取,有效解决了复杂登录场景下的自动化难题,并将会话状态无缝迁移至更高效的 requests 库,适用于后续大规模的 API 数据请求。

掌握这两种方法,可以显著提高网络自动化和数据采集项目的开发效率与健壮性。

http://www.dtcms.com/wzjs/523657.html

相关文章:

  • 利用php做直播网站怎么注册网站 个人
  • 长春网站建设dbd3江门百度seo公司
  • 公司做网站的好处热门关键词
  • 如何免费注册网站域名南通百度seo代理
  • 设置网站首页seo服务工程
  • 北京 经营性网站备案地产渠道12种拓客方式
  • 什么是优化网站360搜索引擎首页
  • wordpress 点击弹出层seo咨询顾问
  • 自己做社交网站搜索引擎营销原理
  • 建设网站用什么软件排版站长之家排行榜
  • 网站建站策划护肤品推广软文
  • 网站做简历模板营销策略范文
  • 上海b2c网站百度 搜索热度
  • 新区网站建设济南百度推广优化
  • 隆尧网站建设百度游戏排行榜
  • 搭建网站流程最稳定的灰色词排名
  • 苏州哪家做网站今日财经最新消息
  • 酒店网站方案网页广告怎么做
  • 培训机构网站成都关键词优化服务
  • php网站开发实用技术练习题竞价广告点击软件
  • 纺织品公司网站建设外国人b站
  • 新手建站工具真正永久免费网站建设
  • 一般网站后台地址百度知道登录入口
  • 帮别人做彩票网站软文内容
  • 网站后台管理系统是用什么做的宁波seo优化
  • 动态网页是指厦门百度关键词优化
  • 网站建设公司哪里找推广注册app拿佣金
  • 网站首页弹出公告模板最新的疫情情况
  • 遵义营销型网站建设北京seo包年
  • 怎样在内网建设一个网站今天刚刚最新消息2023