如何使用仅限 XPath 的正则表达式模式抓取无 ID 的网站元素

How to scrape ID-less website elements with XPath-only regex patterns

有几个与在 XPath 搜索中使用正则表达式相关的类似问题 -- 但是,对于我的特定问题,有些问题不是很 illuminating to me, whereas others 。因此,对于可能遇到相同情况的未来用户,我 post 以下问题:

在 Python/Selenium 中使用一次调用,我希望能够一次抓取下面的所有元素(为了在没有代码格式的情况下提高可读性):

/html/body/div[6]/div/div[1]/div/div[3]/div[2]/div[2]/div[**1**]/div/div[2]/div[1]
/html/body/div[6]/div/div[1]/div/div[3]/div[2]/div[2]/div[**2**]/div/div[2]/div[1]
/html/body/div[6]/div/div[1]/div/div[3]/div[2]/div[2]/div[**3**]/div/div[2]/div[1]
/html/body/div[6]/div/div[1]/div/div[3]/div[2]/div[2]/div[**4**]/div/div[2]/div[1]
/html/body/div[6]/div/div[1]/div/div[3]/div[2]/div[2]/div[**5**]/div/div[2]/div[1]
/html/body/div[6]/div/div[1]/div/div[3]/div[2]/div[2]/div[**6**]/div/div[2]/div[1]

请注意,匹配元素的数量在目标网站之间是可变的(可以超过 6 个,但至少有一个)并且关联元素 没有 特定 ID已分配(根据我的理解,排除 许多 在 Whosebug 上的其他地方解释。

我正在寻找的是这样的东西:

website = driver.get(URL)
html = WebDriverWait(driver, 1).until(EC.presence_of_element_located((By.XPATH, "/html/body/div[6]/div/div[1]/div/div[3]/div[2]/div[2]/div[[0-9]{1}]/div/div[2]/div[1]", regex = True)))

不起作用的是:

website = driver.get(URL)
html = WebDriverWait(driver, 1).until(EC.presence_of_element_located((By.XPATH, "/html/body/div[6]/div/div[1]/div/div[3]/div[2]/div[2]/div[matchers['[0-9]{1}']]/div/div[2]/div[1]")))
TimeoutException: Message: 
Screenshot: available via screen

如何抓取所有没有 ID 的网站元素,其 XPath 与 Python + Selenium 中的正则表达式匹配?

您不需要正则表达式,您需要谓词 [position()<=6]