所以基本上我将selenium用于以下网页:http://www.registrar.ucla.edu/schedule/catalog.aspx?sa=APPLING&funsel=3。我创建了一个驱动程序,我正在寻找符合某些特定条件的粗体文本。下面是我的代码的一部分,它搜索粗体文本并找到匹配的:
# Finds all bold matches which contain the class title
bold_matches = driver.find_elements_by_class_name('bold')
class_title = ''
class_description = ''
for bold_match in bold_matches:
# If the class title matches, we set our class title
if bold_match.text[:bold_match.text.find('.')] == class_number:
class_title = bold_match.text
除了我们找到一个具有匹配文本的元素之外,我们不需要太担心代码,我们将文本设置为类标题。
使用Selenium需要帮助的是获取匹配文本的下一个标记。所以我需要在匹配bold_match
之后立即使用标记。下一个标记包含可设置class_description
文本的文本。
我查看了类似的问题,但它们都引用了与xpath匹配的ID。此网页的问题在于粗体文本标记及其后面的标记不包含任何ID。
答案 0 :(得分:0)
我找到了一种做我需要的hackish方式。以下是我的代码:
# Finds all bold matches which contain the class title
bold_matches = driver.find_elements_by_class_name('bold')
class_title = ''
class_description = ''
for bold_match in bold_matches:
# If the class title matches, we set our class title
if bold_match.text[:bold_match.text.find('.')] == class_number:
class_title = bold_match.text
# We find the class description from the class title
all_elements = driver.find_elements_by_xpath('//*')
matching_index = all_elements.index(bold_match) + 2
class_description = all_elements[matching_index].text
我发现我可以在a ll_elements
列表中找到我当前匹配的元素的索引,然后找到下一个相应的索引来获取class_description
。