-1

我想从任何网站上抓取产品列表。一些网站,例如:亚马逊,阿里巴巴页面上最多有 10 个产品,而有些有 20 个。我不想在每个网站的 XPATH 中放置 for 循环。

有没有办法获得与任何网站的特殊属性相关的所有 XPATH?例如,如果我们有一个表的 XPATH,那么它将显示该表的所有 XPATH。任何帮助,将不胜感激...

4

1 回答 1

1

这是我将使用的示例 HTML

<ul> 标签的 XPath:

  • /html/body/div[4]/div/aside[1]/div[2]/div[2]/div/ul

<li> 标签的 XPath:

  1. /html/body/div[4]/div/aside[1]/div[2]/div[2]/div/ul/li[1]
  2. /html/body/div[4]/div/aside[1]/div[2]/div[2]/div/ul/li[2]
  3. /html/body/div[4]/div/aside[1]/div[2]/div[2]/div/ul/li[3]
  4. /html/body/div[4]/div/aside[1]/div[2]/div[2]/div/ul/li[4]
  5. /html/body/div[4]/div/aside[1]/div[2]/div[2]/div/ul/li[5]

您可以做的是制作一个更通用的 XPath,它将获取您想要的所有 XPath。

所以说你想找到列表中的所有元素:

  • /html/body/div[4]/div/aside[1]/div[2]/div[2]/div/ul/li

请注意,该 XPath 的末尾没有 [#],因此它将找到包含该 xpath 的所有元素

一个例子:

from selenium import webdriver

url = 'https://www.livesoccertv.com/'

driver = webdriver.Firefox()
driver.get(url)

test = driver.find_elements_by_xpath('/html/body/div/div[5]/div[3]/div/table[2]/tbody/tr')
print(len(test))
driver.close()

这将返回 35 的结果

于 2020-03-06T15:37:16.137 回答