如果想從某個單元格中的文本與我的字串匹配的 HTML 表中訪問行元素'Mathematik & Informatik'。
HTML 如下所示:
<table class="views-table cols-4">
<thead>
<tr>
<th class="views-field views-field-field-teilbibliothek" scope="col">
Teilbibliothek
</th>
<th class="views-field views-field-field-tag" scope="col">
Datum
</th>
<th class="views-field views-field-field-zeitslot" scope="col">
Zeitraum
</th>
<th class="views-field views-field-views-conditional" scope="col">
</th>
</tr>
</thead>
<tbody>
<tr class="odd views-row-first">
<td class="views-field views-field-field-teilbibliothek">
Stammgel?nde
</td>
<td class="views-field views-field-field-tag">
<span class="date-display-single">Samstag, 22. Januar 2022</span>
</td>
<td class="views-field views-field-field-zeitslot">
09:00 – 14:30
</td>
<td class="views-field views-field-views-conditional internlink">
ausgebucht
</td>
</tr>
<tr class="even">
<td class="views-field views-field-field-teilbibliothek">
Stammgel?nde
</td>
<td class="views-field views-field-field-tag">
<span class="date-display-single">Samstag, 22. Januar 2022</span>
</td>
<td class="views-field views-field-field-zeitslot">
15:00 – 21:30
</td>
<td class="views-field views-field-views-conditional internlink">
ausgebucht
</td>
</tr>
<tr class="odd">
<td class="views-field views-field-field-teilbibliothek">
Mathematik & Informatik
</td>
<td class="views-field views-field-field-tag">
<span class="date-display-single">Samstag, 22. Januar 2022</span>
</td>
<td class="views-field views-field-field-zeitslot">
10:00 – 14:30
</td>
<td class="views-field views-field-views-conditional internlink">
ausgebucht
</td>
</tr>
<tr class="even">
<td class="views-field views-field-field-teilbibliothek">
Mathematik & Informatik
</td>
<td class="views-field views-field-field-tag">
<span class="date-display-single">Samstag, 22. Januar 2022</span>
</td>
<td class="views-field views-field-field-zeitslot">
15:00 – 19:30
</td>
<td class="views-field views-field-views-conditional internlink">
ausgebucht
</td>
</tr>
<tr class="odd">
<td class="views-field views-field-field-teilbibliothek">
Weihenstephan
</td>
<td class="views-field views-field-field-tag">
<span class="date-display-single">Samstag, 22. Januar 2022</span>
</td>
<td class="views-field views-field-field-zeitslot">
10:00 – 14:30
</td>
<td class="views-field views-field-views-conditional internlink">
<a href="/reserve/1438527699">Zur Reservierung</a>
</td>
</tr>
<tr class="even views-row-last">
<td class="views-field views-field-field-teilbibliothek">
Weihenstephan
</td>
<td class="views-field views-field-field-tag">
<span class="date-display-single">Samstag, 22. Januar 2022</span>
</td>
<td class="views-field views-field-field-zeitslot">
15:00 – 19:30
</td>
<td class="views-field views-field-views-conditional internlink">
<a href="/reserve/530262745">Zur Reservierung</a>
</td>
</tr>
</tbody>
</table>
我正在使用 Python 和 Selenium,并想出了以下代碼來獲取我想要的表格行。
driver.find_elements(By.XPATH, "//table//tr/td[contains(text(),'Mathematik & Informatik')]/..")
此行回傳一個包含三個元素的串列。這些是與我的字串匹配的兩行'Mathematik & Informatik',但也是以某種方式具有文本的另一個元素' Mathematik & Informatik, Weihenstephan 8:00 – 14:3015:00 – 21:30 10:00 – 14:3015:00 – 19:30 '。
我不明白我的 XPATH 有什么問題(為什么它不只回傳帶有給定文本的兩行)。你能幫我修一下嗎?
謝謝你的幫助!
uj5u.com熱心網友回復:
我不同意@Prophet 解決方案,因為有尾隨空格,如果你不使用.contains它不會匹配任何節點。
我在您共享的 HTML 中只看到兩個匹配的節點。但是,您可以使它與這樣的類緊密耦合:
//table//tr/td[contains(text(),'Mathematik & Informatik') and @class='views-field views-field-field-teilbibliothek']
此外,Selenium 不支持 XPath v2.0,如果支持,我們最終會使用ends-with.
要洗掉尾隨空格,請使用:
//table//tr/td[normalize-space()='Mathematik & Informatik']/..
您必須首先簽入HTMLDOM以了解它匹配的節點數:
檢查步驟:
Press F12 in Chrome-> 轉到element部分 -> 執行CTRL F-> 然后粘貼xpath并查看,如果您想要elements的是否使用匹配節點突出顯示。1/2
uj5u.com熱心網友回復:
如果您想匹配文本等于某個值的行,而不僅僅是包含一些文本(并且可能包含其他文本),您應該使用適當的 XPath 運算式。
所以,而不是
driver.find_elements(By.XPATH, "//table//tr/td[contains(text(),'Mathematik & Informatik')]/..")
您可以使用
driver.find_elements(By.XPATH, "//table//tr/td[text()='Mathematik & Informatik']/..")
順便說一句,您也可以tr直接找到所需的元素,而無需從td以下步驟開始:
driver.find_elements(By.XPATH, "//table//tr[./td[text()='Mathematik & Informatik']]")
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/417976.html
標籤:
