如何 select selenium object 中的 html 属性

How to select the html attribute inside a selenium object

我正在学习使用 selenium 进行网络抓取,但在尝试 select selenium object 中的属性时遇到了问题。如果我只是在循环内打印 elems.text (这会输出每个列表的整个段落),我可以获得更广泛的数据但是当我尝试访问这个更广泛的元素内所有列表的 h2 标题标签的 xpath 时,它只将第一个列表附加到标题数组,而我想要所有列表。我检查了 XPATH,它们对于每个列表都是相同的。我怎样才能获得所有列表而不是第一个?

titles = []
driver.get("https://www.sellmytimesharenow.com/timeshare/All+Timeshare/vacation/buy-timeshare/")

results = driver.find_elements(By.CLASS_NAME, "results-list")

for elems in results:
    print(elems.text) #this prints out full description paragraphs
    elem_title = elems.find_element(By.XPATH, '//*[@id="search-page"]/div[3]/div/div/div[2]/div/div[2]/div/a[1]/div/div[1]/div/h2')
    titles.append(elem_title.text)

如果您不限于仅通过 XPATH 访问元素,那么这是我的解决方案:

results = driver.find_elements(By.CLASS_NAME, "result-box")
for elems in results:
    titles.append(elems.text.split("\n")[0])

当您尝试获取列表时,您使用 find_elements(By.CLASS_NAME, "results-list"),但在该网站上,只有一个元素具有 class 名称 "results-list"。这会将此 div 中的所有文本聚合为一个长字符串,因此您无法获取标题。

但是,有多个具有 class 名称的元素 "result-box",因此 find_elements 会将每个元素作为其自己的项目存储在 "results" 中。因为每个listing的标题都在第一行,所以你可以用换行符来分割每个元素的文本。