簡體   English   中英

Python Selenium 從父母那里拉孩子財產?

[英]Python Selenium pulling child property from parent?

我正在嘗試為特定字段中的文本抓取網絡表單,但是我無法使用 xpath 進行此操作,因為某些 forms 缺少在加載時不會包含在頁面中的字段(即,如果 /html/blah/blah/ p[3] 是一個表單的首字母字段,它可能是另一個表單上的名字,但具有相同的 xpath。字段的結構如下:

<p><strong>Initials:</strong> WT</p>

所以使用 python selenium 我正在做driver.find_element_by_xpath("//*[contains(text(), 'Initials:')]")它確實成功地在強標簽之間拉出“Initials:”文本,但我特別需要其后的子文本,在本例中為 WT。 它具有包含 WT 值的屬性“nextSibling.data”,但從我的谷歌搜索來看,我認為不可能用 python selenium 提取該屬性。 有誰知道在 xpath 查詢之后提取 WT 文本的方法?

'WT' 文本位於一個奇怪的位置。 我不認為它實際上是一個兄弟姐妹本身。 我知道獲取該文本的唯一方法是使用p_element.get_attribute('outerHTML') ,在這種情況下應該獲取字符串'<p><strong>Initials:</strong> WT</p>' 我懷疑這是最干凈的解決方案,但這是一種解析文本的方法:

strong_close_tag = '</strong>'
p_close_tag = '</p>'

p_element = driver.find_element_by_xpath("//*[contains(text(), 'Initials:')]/parent")

print(p_element.get_attribute('outerHTML')[text.index(strong_close_tag)+len(strong_close_tag):text.index(p_close_tag)])

或者——使用p_element.get_attribute('innerHTML') ,它應該只返回<strong>Initials:</strong> WT 然后,類似地,抓取</strong>關閉選項卡后的文本,可能是這樣的:

p_element = driver.find_element_by_xpath("//*[contains(text(), 'Initials:')]/parent")

print p_element.get_attribute('innerHTML').split("</strong>",1)[1] 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM