使用 selenium 但不使用 xpath 在 table 的同一行中抓取相关元素
scrape related elements in the same row of a table using selenium but without xpath
我正在尝试使用 selenium 和 PhantomJS 抓取这个 HTML。行模式从第 1 行到第 N 行重复,我不知道会有多少行。
<table id="TableName">
<thead></thead>
<tbody>
<tr id="Row 1">
<td class="Details column">
</td>
<td class="More details column">
</td>
<td class="Extra details column">
<div class="unique_information">
<div class="print-only">ID # 1234</div>
</div>
</td>
<td class="Numbers column">
<div class="numbers-data">
<div>
<label class="specific_number">123456</label>
</div>
</div>
</td>
<td class="Numbers column">
<div class="numbers-data">
<div>
<label class="specific_number">345678</label>
</div>
</div>
</td>
<td class="Numbers column">
<div class="numbers-data">
<div>
<label class="specific_number">234567</label>
</div>
</div>
</td>
</tr>
</tbody>
在这种情况下,我试图找到最大的 class_by_name(specific_number)(即 345678),它可以在任何 "Number Columns" 中,也可以在与我要查找的特定 "unique_information" 关联的同一行(即 1234)。
我不擅长 xpath,我不会提前知道具有 unique_information 的父行(即可能在第 1、2、3 行等)所以我我正在努力想出一个 contains 语句来确保两者都是真的。
def findLargestNumInRow(id):
xpath = '//table[@id="TableName"]/tbody/tr[td[3][div/div[contains(text(),"{0}")]]]'.format(id)
tds = driver
// find row which unique_information contains given id
.find_element_by_xpath(xpath)
// find all number child td
.find_elements_by_css_selector('td.Numbers')
numbers = [ td.text * 1 for td in tds]
return numbers.sort()[-1]
findLargestNumInRow('1234')
我正在尝试使用 selenium 和 PhantomJS 抓取这个 HTML。行模式从第 1 行到第 N 行重复,我不知道会有多少行。
<table id="TableName">
<thead></thead>
<tbody>
<tr id="Row 1">
<td class="Details column">
</td>
<td class="More details column">
</td>
<td class="Extra details column">
<div class="unique_information">
<div class="print-only">ID # 1234</div>
</div>
</td>
<td class="Numbers column">
<div class="numbers-data">
<div>
<label class="specific_number">123456</label>
</div>
</div>
</td>
<td class="Numbers column">
<div class="numbers-data">
<div>
<label class="specific_number">345678</label>
</div>
</div>
</td>
<td class="Numbers column">
<div class="numbers-data">
<div>
<label class="specific_number">234567</label>
</div>
</div>
</td>
</tr>
</tbody>
在这种情况下,我试图找到最大的 class_by_name(specific_number)(即 345678),它可以在任何 "Number Columns" 中,也可以在与我要查找的特定 "unique_information" 关联的同一行(即 1234)。
我不擅长 xpath,我不会提前知道具有 unique_information 的父行(即可能在第 1、2、3 行等)所以我我正在努力想出一个 contains 语句来确保两者都是真的。
def findLargestNumInRow(id):
xpath = '//table[@id="TableName"]/tbody/tr[td[3][div/div[contains(text(),"{0}")]]]'.format(id)
tds = driver
// find row which unique_information contains given id
.find_element_by_xpath(xpath)
// find all number child td
.find_elements_by_css_selector('td.Numbers')
numbers = [ td.text * 1 for td in tds]
return numbers.sort()[-1]
findLargestNumInRow('1234')