2017-04-12 61 views
0

我有一個提示,顯示如下消息的Web元素: ●客戶端預訂收入$二千〇九十六萬六千六百一十八如何使用Selenium Webdriver和Python從沒有屬性的工具提示中獲取文本?

該提示的HTML代碼如下。我可以使用Selenium Webdriver將鼠標懸停在Web元素上,這使得工具提示可見,但我無法弄清楚如何從中獲取文本。有人可以幫忙嗎?

<div class="highcharts-tooltip" style="position: absolute; left: 755px; top: 0px; display: block; opacity: 1; pointer-events: none; visibility: visible;"> 
    <span style="position: absolute; font-family: "Roboto",sans-serif; font-size: 12px; white-space: nowrap; color: rgb(51, 51, 51); margin-left: 0px; margin-top: 0px; left: 0px; top: 0px;"> 
     <div class="client-rate-bench-chart"> 
      <table class="table rdo-table-tooltip"> 
       <tbody> 
        <tr> 
         <td> 
          <span style="color:rgba(45,108,162,1)">●</span> 
          Client Book Revenue 
         </td> 
         <td> $20,966,618 </td> 
        </tr> 
       </tbody> 
      </table> 
     </div> 
    </span> 
</div> 

回答

1

你可以抓住的表,然後搶<tr>

from bs4 import BeautifulSoup 
from selenium import webdriver 

driver = webdriver.Firefox() 
driver.get(URL) 
html = driver.page_source # this is how you get the HTML 

soup = BeautifulSoup(html) 
table = soup.find('table', class_='rdo-table-tooltip') 
tooltip = table.find('tr') 
text = tooltip.text 

text一審就會有很多因爲HTML是如何格式化多餘的空格,但是你可以剝奪了這一點 - 只是拆分對所有空格,然後重新加入這樣

final_text = ' '.join(text.split()) 
print final_text 
# ● Client Book Revenue $20,966,618 

元素對於多<tr>是你可以使用.find_all('tr'),然後使用列表理解來獲得行內容的列表。這將是這個樣子

soup = BeautifulSoup(html) 
table = soup.find('table', class_='rdo-table-tooltip') 
tooltips = table.find_all('tr') 
text = [' '.join(tooltip.text.split()) for tooltip in tooltips] 

然後文本將包含從每個<tr>

+0

如何使用Selenium獲取與Tooltip相關的HTML代碼以將其與BeautifulSoup一起使用? – sprogissd

+0

更新了答案 – wpercy

+0

美麗!謝謝!我收到一條錯誤消息,說我應該將'soup = BeautifulSoup(html)'改成'soup = BeautifulSoup(html,「html.parser」)',但是在我做完之後,一切都奏效了。 – sprogissd

0

的文本,你可以使用re.findall返回標籤之間的文本的所有實例的替換字符串列表。這將涉及一些清理後,但我發現它與Selenium一起工作時非常方便。

import re 

tooltips = re.findall('<tr>(.*?)<tr>', html.replace('\n', '')) 

for tooltip in tooltips: 
    print tooltip 
+0

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – wpercy

+0

有趣!感謝您的鏈接。 – Paprike

相關問題