Как получить ссылку с помощью xpath в nodejs? - PullRequest
1 голос
/ 14 июля 2020

Здравствуйте, я пытаюсь получить ссылку, подключенную к этому href

<a href="http://e epurl.com/g-em6v" title="Late Night 1 Love" target="_blank">Late Night 1 Love</a>

(мне пришлось добавить пробел между URL-адресами). Мне удалось получить текстовое содержимое с помощью следующего метода

const [el] = await page.$x('//*[@id="archive-list"]/div/li[1]');
    const txt = await el.getProperty("textContent");
    const rawTxt = await txt.jsonValue();
  const [link] = await page.$x('//*[@id="archive-list"]/div/li[1]/a');
     const L = await string('//*[@id="archive-list"]/div/li[1]/a/@href'); 
    console.log(L);

У меня возникли проблемы с извлечением самой ссылки, я надеялся, что это сработает, но это оказалось не так просто. Любая помощь будет принята с благодарностью!

FYI Я использую кукловод, чтобы перейти на страницу, чтобы получить доступ к элементам!

1 Ответ

1 голос
/ 14 июля 2020

Это самый простой способ использовать page.evaluate для получения свойств элемента. Это выглядит так: page.evaluate(pageFunction[, ...args]) pageFunction оценивается в контексте страницы, где экземпляры ElementHandle могут быть переданы в качестве аргументов. Поскольку дескриптор XPath возвращает массив (длиной 1), вы можете использовать 1-й элемент индекса [0].

Например:

const link = await page.evaluate(el => el.href, (await page.$x('//*[@id="archive-list"]/div/li[1]/a'))[0])
console.log(link)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...