Выражения XPath
Вот где XPath выражение отлично:
//td[contains(., '10-Q')]/following-sibling::td[1]/a[1]
Это выражение XPath запрашивает элемент td
, содержащий текст 10-Q .Затем он возьмет следующий элемент td
и вернет первую ссылку (a
) внутри.В качестве альтернативы, вы можете использовать //td[text()='10-Q']/
в начале, если вы не хотите, чтобы элемент содержал текст, но чтобы он точно соответствовал ему.
Использование внутри кукловода
Чтобы получитьэлемент с кукловодом, используйте функцию page.$x
.Чтобы извлечь информацию (например, href
) из запрашиваемого узла, используйте page.evaluate
.
Собрав все вместе, код выглядит следующим образом:
const [linkHandle] = await page.$x("//td[contains(., '10-Q')]/following-sibling::td[1]/a[1]");
const address = await page.evaluate(link => link.href, linkHandle);