如何从XPath Selenium(Python)中提取多个元素

时间:2018-02-02 15:46:58

标签: python xml selenium xpath webdriver

我做了这个XPath

alo1 = driver.find_element(By.XPATH, "//div[@class='txt-block']/span/a/span").text
print(alo1)

但问题是:我只得到第一个元素,但是有3个或4个元素具有相同的XPath,我想要所有。

从页面到页面,元素数量从0变为4。

我该怎么做?

另外,您认为可以制作另一个XPath吗?我试图获得电影制片人的名字。

编辑:

我有第二个困难。我将此结果传递给excel表,但它需要在一行中打印,否则只打印最后一行。怎么做到呢? ,

wb = xlwt.Workbook()
ws = wb.add_sheet("A Test Sheet")
driver = webdriver.Chrome()
driver.get('http://www.imdb.com/title/tt4854442/?ref_=wl_li_tt')
labels = driver.find_elements_by_xpath("//div[@class='txt-
block']/span/a/span")
for label in labels:
   print (label.text)
ws.write(x-1,1,label.text)
wb.save("sinopses.xls")

网站供参考:http://www.imdb.com/title/tt4854442/?ref_=wl_li_tt

2 个答案:

答案 0 :(得分:2)

您可以一次性获取所有内容,然后获取每个元素的文本:

combList = list(comb)

答案 1 :(得分:1)

对于第一个问题:

FindElement总是只给出一个结果,即使定位符匹配多个,它也会自动获取第一个结果。

如果定位器提供了多个匹配结果而您想要所有这些结果,那么您应该选择findElements

关于第二个问题:

labels = driver.find_elements_by_xpath("//div[@class='txt-
block']/span/a/span")
result = ''
for label in labels:
   result += label.text
   print (result)
ws.write(x-1,1,result)
wb.save("sinopses.xls")