首页 > 编程问答 >如何记录网页的链接并将其存储在变量中?

如何记录网页的链接并将其存储在变量中?

时间:2024-08-03 05:13:23浏览次数:15  
标签:python python-requests pyautogui python-webbrowser

基本上在我的项目中,我使用 webbrowser 打开一个网页,然后使用 pyautogui 在搜索栏中输入一些内容,这会打开一个新页面。我需要一个函数来查找新页面的链接并将其存储为变量,以便我可以拥有动态 requests.get() 函数。我希望我的解释有意义

我不知道如何检索它并将其保存为变量,我可以将它作为文本或其他内容检索,但它不会作为变量保存到相同的代码中跑步


你不能直接用 webbrowser pyautogui 获取打开网页的链接。这两个库主要用于自动化浏览器操作,而非提取网页数据。

你需要使用一个能与网页交互并提取信息的库,比如 requests selenium

使用 selenium 获取网页链接:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time

# 初始化 webdriver (这里以 Chrome 为例)
driver = webdriver.Chrome()

# 打开初始网页
driver.get("https://www.google.com/")

# 定位搜索栏并输入内容
search_box = driver.find_element(By.NAME, "q")
search_box.send_keys("Python")
search_box.send_keys(Keys.ENTER)

# 等待新页面加载 (可根据实际情况调整等待时间)
time.sleep(2)

# 获取当前页面的 URL 并存储到变量
current_url = driver.current_url

# 打印链接
print(f"当前网页链接: {current_url}")

# 关闭浏览器
driver.quit()

解释:

  1. 导入必要的库: selenium 用于控制浏览器, time 用于设置等待时间。
  2. 初始化 WebDriver: 你需要下载对应浏览器的 WebDriver 并将其路径添加到系统环境变量中。
  3. 打开网页: 使用 driver.get() 方法打开目标网页。
  4. 定位元素: 使用 driver.find_element() 方法定位搜索栏。这里使用 By.NAME 来根据元素的 name 属性查找。
  5. 输入内容并提交: 使用 send_keys() 方法模拟键盘输入,然后使用 Keys.ENTER 模拟按下回车键。
  6. 等待页面加载: 使用 time.sleep() 方法等待新页面加载完成。
  7. 获取当前 URL: 使用 driver.current_url 属性获取当前页面的 URL,并将其存储到 current_url 变量中。
  8. 关闭浏览器: 使用 driver.quit() 方法关闭浏览器。

现在,你可以在 current_url 变量中找到新页面的链接,并将其用于 requests.get() 函数中进行后续操作。

标签:python,python-requests,pyautogui,python-webbrowser
From: 78827211

相关文章

  • python数据分析与可视化基础
    一、数据分析介绍:1.数据分析含义:数据分析是指用适当的统计分析方法对收集来的大量数据进行分析,将它们加以汇总和理解并消化,以求最大化地开发数据的功能,发挥数据的作用。数据分析是为了提取有用信息和形成结论而对数据加以详细研究和概括总结的过程。数据分析的数学基础在20世纪早......
  • 为什么要设置 os.environ[“PYTHONHASHSEED“] = “0“,这样做具体会影响哪些随机值?
    ......
  • Python,Geopandas报错,AttributeError: The geopandas.dataset has been deprecated and
    Python版本3.9,Geopandas版本1.0.1问题描述:这是执行的代码,importpandasaspdimportgeopandasimportmatplotlib.pyplotaspltworld=geopandas.read_file(geopandas.datasets.get_path('naturalearth_lowres'))world.plot()plt.show()这是报错信息,Traceback(mo......
  • Python,Maskrcnn训练,cannot import name ‘saving‘ from ‘keras.engine‘ ,等问题集合
    Python版本=3.9,tensorflow=2.11.0,keras==2.11.0问题一、module'keras.engine'hasnoattribute'Layer'Traceback(mostrecentcalllast):File"C:\Users\Administrator\Desktop\20240801\代码\test.py",line16,in<module>......
  • 7-Python数据类型——列表和元组的详解(增删改查、索引、切片、步长、循环)
    一、列表1.1列表list有序且可变的容器,可以存放多个不同类型的元素列表就是专门用来记录多个同种属性的值列表:存储同一个类别的数据,方便操作字符串,不可变:即:创建好之后内部就无法修改【内置功能都是新创建一份数据】name="xiaochaun"data=name.upper()print(nam......
  • python中的 is 和 ==
    一前言环境:win10python3.10二is和isnot1比较对象的identityis和isnot是python的比较运算符,比较运算符除了这两个,还有下图中的这些is和isnot比较的是两个对象的是identityidentity是啥,内置函数id()返回的就是这个东西通过上面id函数的解释,现在知道,identi......
  • Python应用开发——30天学习Streamlit Python包进行APP的构建(23):构建多页面应用程序
    创建动态导航菜单通过st.navigation,可以轻松创建动态导航菜单。您可以在每次重新运行时更改传递给st.navigation的页面集,从而更改与之匹配的导航菜单。这是创建自定义、基于角色的导航菜单的便捷功能。本教程使用st.navigation和st.Page,它们是在Streamlit1.36.0版中......
  • Python数据结构第二天—循环链表、树、二叉搜索树
    双向链表之前学习的单向链表只能从头遍历到尾,过程是单向的,而双向链表既可以从头遍历到尾,也可以从尾遍历到头,它的过程是双向的。既然它是双向的,那么我们要实现一个双向链表,就需要在单向链表的基础上,给每一个结点增加一个向前的引用。双向链表的创建:"""我们要实现的是一......
  • Python学习笔记50:游戏篇之外星人入侵(十一)
    前言本篇文章接着之前的内容,继续对游戏功能进行优化,主要是优化游戏状态以及对应的处理。状态一个游戏包含多种状态,这个状态是一个可以很复杂也可以很简单的内容。条件所限,我们这个游戏的状态就比较简单:未开始游戏中暂停结束我们通过一个字段进行控制,并且将这个字段放置......
  • python——functools
    好的,我们再详细讲解functools模块的常用工具,包括每个API的语法和参数,并特别详细解释lru_cache的工作原理及其缓存机制。functools简介functools模块提供了许多高阶函数和工具,用于操作或返回其他函数,帮助我们更方便地进行函数式编程。1.partial函数partial函数用于固定......