无法在python selenium中按类名选择html元素

无法在python selenium中按类名选择html元素,python,selenium,html-content-extraction,Python,Selenium,Html Content Extraction,我正在尝试从以下html代码的最后一行中选择“我需要此文本”,但到目前为止尚未成功: <div class="warn"> <div class="row container pv2"> <div class="col xs12"> <div class="display-table-cell b-text_copy-4 pr1"> <i class="msg-icon b-ic

我正在尝试从以下html代码的最后一行中选择“我需要此文本”,但到目前为止尚未成功:

        <div class="warn">
<div class="row container pv2">
    <div class="col xs12">
        <div class="display-table-cell b-text_copy-4 pr1">
            <i class="msg-icon b-icon b-icon-warn"></i>
        </div>
        <div class="display-table-cell b-text_copy-2 b-text_weight-bold">
                    <div> I NEED THIS TEXT <a href=https://somelink/contact.html target=_blank>contact us</a>.</div>
输出:


我是不是做错了什么?如何选择我需要此文本并将其打印到控制台?

我们的主要目标是从以下节点提取我需要的文本此文本:

<div> I NEED THIS TEXT <a href=https://somelink/contact.html target=_blank>contact us</a>.</div>
控制台输出:

I NEED THIS TEXT 

主要问题是,您使用的大多是CSS选择器,而不是类名。按类查找元素名称专门用于单个类名。如果你想使用CSS选择器,你需要使用。通过CSS选择器查找元素。您使用的大多数CSS选择器实际上也不是用于所需的DIV。如果没有指向页面的链接或更多HTML,很难说出来,但是试试这些

CSS选择器

div.display-table-cell.b-text_copy-2.b-text_weight-bold > div
XPath


您将遇到的一个问题是,立即包含所需文本的DIV也包含contact-us。因此,如果不想将其作为最终字符串的一部分,则需要将其删除。

返回错误:消息:给定xpath表达式//div[@class='display-table-cell b-text\u copy-2 b-text\u weight-bold']/[self::div和not@href='无效:语法错误:该表达式不是合法表达式。为什么要使用innerHTML?您将获得我需要此文本目标=\u blank>联系我们..@sudonym请查看我的更新答案并告诉我状态。@JeffC我想您对使用和感到非常困惑和犹豫。请查看文档并让我知道哦,如果你有任何问题。我完全理解它将做什么…这就是为什么我在我的评论中打印它。我是不是错了?如果是,输出应该是什么?你似乎是一个困惑的人。这就是为什么你改变了你的答案。你是完全正确的-你介意我通过电子邮件联系你吗?你已经谈论了什么OP ha我已经尝试过了,但失败了。你的答案不包含任何分割逻辑来提取OP需要的文本。@DebanjanB是的……我相信这是一个好答案的核心。为了解释OP的尝试失败的原因,以便他们能够了解自己做错了什么。一个好答案的另一个关键部分是实际回答这个问题。我已经做了很多lso提供了3种不同的方法。我解决了关于打印额外文本的部分,但OP没有说明他们是否关心该文本是否在其中,所以我描述了如何自己修复它,这包含在许多其他问题、博客和网上教程中,所以留给OP来解决。@DebanjanB你在做什么被称为复仇否决票。你否决了我,因为我否决了你。我注意到你以前这样做过,你需要停止。我出于合理的原因否决了你的答案,并在我的评论中解释了原因。如果你能证明我错了,我将撤销我的否决票。你对我答案的评论没有内容。你会注意到OP同意我的意见,并离开no对我的回答的更正发表评论。阅读:。@sudonym我不发送我的个人电子邮件。你可以在这里留下评论,我会看到它们,然后一般回复。
my_string = driver.find_element_by_xpath("//div[ancestor::div[contains(@class, 'display-table-cell b-text_copy-2 b-text_weight-bold')]]").get_attribute("innerHTML")                    
my_text = my_string.split("contact")
print(my_text[0])
I NEED THIS TEXT 
div.display-table-cell.b-text_copy-2.b-text_weight-bold > div
//div[contains(.,'I NEED THIS TEXT')]
//a[.='contact us']/..