当前位置: 首页 > 知识库问答 >
问题:

在Python中通过Selenium Web Automation获取超文本标记语言的文本值?

法子昂
2023-03-14

我正在制作一个reddit机器人,它将在评论中查找某些属性,使用selenium访问信息网站,并使用驱动程序。通过…查找元素获取该标记内的值,但它不起作用。

当我使用driver.find_element_by_class_name()时,这是返回的数据:

<selenium.webdriver.remote.webelement.WebElement (session="f454dcf92728b9db4de080a27a844bf7", element="514bd57d-99d7-4fce-a05d-3fa92f66ad49")>

当我使用驱动程序时。通过css选择器(“.style scope.ytd video renderer”)查找元素,返回:

[
  <selenium.webdriver.remote.webelement.WebElement (session="43cb953cde81df270260bf769fe081a2", element="6b4ee3e2-5e6b-48e2-8ec8-9083bf15baea")>, 
  <selenium.webdriver.remote.webelement.WebElement (session="43cb953cde81df270260bf769fe081a2", ...
]

当我使用驱动程序时。通过css选择器(“.style scope.ytd video renderer”)查找元素。

假设这是我试图找到的(上面的代码返回了上面这个标签的硒数据):

<yt-formatted-string class="style-scope ytd-video-renderer" aria-label="Sword Art Online: Alicization Lycoris Opening Full『ReoNa - Scar/let』 by Melodic Star 2 months ago 4 minutes, 18 seconds 837,676 views">Sword Art Online: Alicization Lycoris Opening Full『ReoNa - Scar/let』</yt-formatted-string>

我想要什么

我想要剑术在线:Alicization Lycoris全面开放『ReoNa-Scar/let』返回。

我能做什么?


共有2个答案

戈念
2023-03-14

看来你离得够近了。当您使用驱动程序时。通过\u class\u name()查找\u元素。返回第一个匹配的WebElement。打印时,输出为:

<selenium.webdriver.remote.webelement.WebElement (session="f454dcf92728b9db4de080a27a844bf7", element="514bd57d-99d7-4fce-a05d-3fa92f66ad49")>

它表示WebElement本身,其中可能包含所需的文本。

在类似的行中驱动程序。通过css选择器(“style scope.ytd video renderer”)查找元素“返回匹配WebElements的列表,在打印这些元素时,输出为:

[
  <selenium.webdriver.remote.webelement.WebElement (session="43cb953cde81df270260bf769fe081a2", element="6b4ee3e2-5e6b-48e2-8ec8-9083bf15baea")>, 
  <selenium.webdriver.remote.webelement.WebElement (session="43cb953cde81df270260bf769fe081a2",
  ...
]

从以下超文本标记html" target="_blank">语言中提取文本《剑术在线:阿利西化石蒜开放全文》:

<yt-formatted-string class="style-scope ytd-video-renderer" aria-label="Sword Art Online: Alicization Lycoris Opening Full『ReoNa - Scar/let』 by Melodic Star 2 months ago 4 minutes, 18 seconds 837,676 views">Sword Art Online: Alicization Lycoris Opening Full『ReoNa - Scar/let』</yt-formatted-string>

您可以使用以下任一定位器策略:

>

  • 使用css\u选择器get\u属性()

    print(driver.find_element_by_css_selector("yt-formatted-string.style-scope.ytd-video-renderer").get_attribute("innerHTML"))
    

    使用xpath和文本属性:

    print(driver.find_element_by_xpath("//yt-formatted-string[@class='style-scope ytd-video-renderer']").text)
    

    理想情况下,要打印文本3862.76,您必须为位于()的元素的可见性引入WebDriverWait,并且您可以使用以下任一定位器策略:

    >

  • 使用CSS_SELECTORget_attribute()

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "yt-formatted-string.style-scope.ytd-video-renderer"))).get_attribute("innerHTML"))
    

    使用XPATH和文本属性:

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//yt-formatted-string[@class='style-scope ytd-video-renderer']"))).text)
    

    注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

    您可以找到有关如何使用Selenium-Python检索WebElement文本的相关讨论

    链接到有用的文档:

    • get\u attribute()method获取元素的给定属性或属性

  • 司徒志强
    2023-03-14

    使用. text

    element = driver.find_element_by_xpath('//*[@id="container"]/h1/yt-formatted-string')
    print(element.text)
    
     类似资料:
    • 我试着通过电子邮件发送这个。我尝试了很多方法,但总是得到同样的结果:一个错误。 http://goto-21.net/campaign/htmlversion?mkt_hm=0 我试过这个: curl-s--user'api: key-3ax6xnjp29jd6fds4gc373sgvjxteol0'\Xhttps://api.mailgun.net/v2/samples.mailgun.org/

    • 我有一个非常简单的问题,我有一个div在一个html页面,我可以通过他的XPath访问这是:。 我想要一个XPath,可以提供这个div的所有子元素,但我找不到它。我需要用硒的findElements方法获取元素,但我测试的方法不起作用: 我的超文本标记语言代码如下: 我想这样使用XPath: 我的Java Selenium脚本如下: 我应该使用什么XPath来获取的子级? 编辑1:我确实使用了*

    • 这就是HTML代码。到目前为止,我已经进行了以下xpath查询: 这让我找到了

    • 我试图在HTML的pre标签中包装文本,但它不起作用。我使用下面的CSS作为我的标签。 我从如何在pre标记中换行文本? 我已添加

    • 我正在工作的工具提示和从后端我将获得数据与html标记。我需要在工具提示中显示相应的标签中的相应数据。例如,我将从后端获得Hello用户单击此处。我必须显示为你好用户在h1格式,点击这里应该是一个锚。我尝试了这两个功能,并取代其不工作。 具有以下功能: 替换: https://codesandbox.io/s/serene-fast-u8fie?file=/App.svelte

    • 我试图使用python/lxml和命令提取图像URl,但在隔离url本身时遇到麻烦。 下面是我想要的围绕img的HTML: 具体来说,我想隔离<代码>https://photos.zillowstatic.com/p_h/IS2fordnekys6d1000000000.jpgurl。 我尝试了几种方法,但都没有成功,包括以下几种方法: