我正在尝试使用selenium和PhantomJS来抓取这个HTML。行模式重复行1到N,我不知道会有多少行。
// list of books (objects)
List<Book> books = new ArrayList<>();
books.add(new Book(1, 6));
books.add(new Book(2, 2));
books.add(new Book(3, 9));
books.add(new Book(4, 18));
List<Map<String, Object>> booksMap = Collections.emptyList();
// convert list into list of maps using regular for-loop
// map structure with 2 keys
for (Book book : books) {
Map<String, Object> map = new HashMap<>();
map.put("id", book.getId());
map.put("quantity", book.getQuantity());
booksMap.add(map);
}
在这种情况下,我正在尝试找到最大的class_by_name(specific_number)(即345678),它可以位于任何“Number Columns”中,它也位于与我的特定“unique_information”关联的同一行中我正在寻找(即1234)。
我在xpath上并不擅长,我不会提前知道具有该unique_information的父行(即可能在第1,2,3行等),所以我很难想出来使用contains语句确保两者都为真。
答案 0 :(得分:0)
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')