【问题标题】:get text from element with <br> on its composition, using Python Selenium使用 Python Selenium 从元素中获取带有 <br> 的文本
【发布时间】:2018-03-12 16:20:06
【问题描述】:

我正在从网站中提取联系信息(文本),我目前可以使用以下 xpath 语法提取所有类数据:

//*[@id="nomapdata"]/div/div/div/div[2]/div[1]

使用此xpath 作为元素,我得到以下文本:

Name
Title
Company Website
Phone Number

我想要做的是单独提取每个元素,但问题是,数据由&lt;br&gt; &lt;/br&gt; 分隔,我没有成功隔离每个元素。

以下是 HTML 结构的示例:

<div class="col-sm-d">
"
                  Name"
<br>
"
                              Title"
<br>
a href="www.website.com" target="_blank">http://www.website.com</a>
<br>
"

Phone: (555) 555-5555"
<br>

我能够隔离的唯一元素是网站。

如何隔离此场景中的每个数据?

【问题讨论】:

  • 为什么不把它们全部作为单个字符串,然后用&lt;br&gt;分割字符串?

标签: python html selenium xpath line-breaks


【解决方案1】:

尝试获取文本节点列表为

driver.find_element_by_xpath('//*[@id="nomapdata"]/div/div/div/div[2]/div[1]').text.split("\n")

如果电话号码后面有更多不想使用的文本节点:

driver.find_element_by_xpath('//*[@id="nomapdata"]/div/div/div/div[2]/div[1]').text.split("\n")[:4]

【讨论】:

    【解决方案2】:

    您可以使用相同的定位器,但获取 innerHTML 而不是 .text。这将为您提供打开和关闭 &lt;DIV&gt; 标记之间的所有 HTML。然后您可以将生成的字符串按&lt;br&gt; 拆分,您将拥有所有所需的部分。从您的示例 HTML 中,看起来您可能希望 strip() 每个部分删除空格,并且您必须根据需要处理/解析链接部分。

    s = driver.find_element_by_xpath("//*[@id='nomapdata']/div/div/div/div[2]/div[1]").get_attribute("innerHTML")
    data = [item.strip() for item in s.split("<br>")]
    

    data 现在将是一个字符串数组,例如

    ['Name', 'Title', '<a href="www.website.com" target="_blank">http://www.website.com</a>', 'Phone: (555) 555-5555']
    

    然后您可以处理您想要/需要的任何其他内容。

    【讨论】:

      【解决方案3】:

      首先,获取元素:

      var elements = _webDriver.FindElements(By.XPath(@"//*[@id='nomapdata']/div/div/div/div[2]/div[1]"));
      

      第二;

              foreach (var element in elements)
              {
                  var temp = element.Split('\n');
      
                  YourClass yourClass = new YourClass
                  {
                      Name = temp[0],
                      Title = temp[1],
                      CompanyWebsite = temp[2],
                      PhoneNumber = temp[3],
      
                  };
      
                  yourList.Add(yourClass);
              }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多