Как мне написать селектор для DOM в Javascript по сравнению с кукловодом $ x eveluation selector? - PullRequest
0 голосов
/ 21 января 2020

Я использовал Puppeteer (Больше на: YT: Puppeteer Youtube Video WebSite ) и мог написать программу с XPATH для оператора оценки $ x.

        const [WCPub]  = await page.$x('//*[@id="details"]/div/table/tbody/tr[3]/td');

Но теперь мне потребуется для querySelector также строка селектора. Следующая передача из XPATH не работает. Может кто-нибудь сказать мне правильную строку запроса querySelector на XPATH?

        WCPub  = WCbookelement.querySelector('//*[@id="details"]/div/table/tbody/tr[3]/td');

Я пробовал это:

 WCbookJson.BOOKPUB  =  WCbookelement.querySelector('#"details" div > table > 
                                                     tbody > tr[3] >td').innerHTML;

Это поле Publication от Worldcat:

enter image description here Но получите ошибку что селектор недействителен. Что я не правильно понял?

Спасибо, Уолтер

1 Ответ

1 голос
/ 21 января 2020

Вы хотите удалить двойные кавычки (") вокруг селектора идентификатора и использовать :nth-child для выбора правильного индекса строки.

Но, если честно, я думаю, что вы преобразовали селектор из xPath в буквальном смысле. Вы также можете просто сделать #details tr:nth-child(3) > td (в зависимости от вашей структуры html).

var text = document.querySelector('#details > div > table > tbody > tr:nth-child(3) > td').innerHTML;
console.log(text);
<div id="details">
  <div>
    <table>
      <tbody>
        <tr>
          <td>Row 1</td>
        </tr>
        <tr>
          <td>Row 2</td>
        </tr>
        <tr>
          <td>Row 3</td>
        </tr>
      </tbody>
    </table>
  </div>
</div>
...