Не удается очистить веб-страницы после навигации по странице

#javascript #node.js #web-scraping #puppeteer

#язык JavaScript #node.js #соскабливание паутины #кукольник

Вопрос:

Я пытаюсь написать программу , которая https://www.redfin.com/ ищет определенный адрес, а затем регистрирует имя, адрес электронной почты и номер телефона агента по продаже недвижимости.

Это отлично работает, когда я запускаю определенную домашнюю страницу (например: https://www.redfin.com/MO/St-Louis/4434-Ellenwood-Ave-63116/home/62717377 ) и использую:

 const name = await page.$eval(  '#sideBarContent gt; div gt; div gt; div.primaryBody gt; div.padding-top-medium gt; div.font-weight-bold',  (el) =gt; el.textContent, ); const brokerage = await page.$eval(  '#sideBarContent gt; div gt; div gt; div.primaryBody gt; div.padding-top-medium gt; div:nth-child(2)',  (el) =gt; el.textContent, ); const phone = await page.$eval(  '#sideBarContent gt; div gt; div gt; div.primaryBody gt; div.padding-top-medium gt; div:nth-child(3) gt; a',  (el) =gt; el.textContent, ); const email = await page.$eval(  '#sideBarContent gt; div gt; div gt; div.primaryBody gt; div.padding-top-medium gt; div:nth-child(4) gt; a',  (el) =gt; el.textContent, );  

Но когда я начну с главной https://www.redfin.com/ страницы и сначала перейду по определенному адресу, сделав это:

 await page.type("#search-box-input", address) await page.click("#tabContentId0 gt; div gt; div gt; form gt; div gt; button") await page.waitForNavigation();  

перед использованием оценок страниц для поиска сведений об агентах я не могу получить к ним доступ и получаю ошибку узла

 No node found for selector: #tabContentId0 gt; div gt; div gt; form gt; div gt; button  at assert (C:UserslevihDesktopweb scrapingrealEstateAgentDetailsScrapernode_modulespuppeteerlibcjspuppeteercommonassert.js:26:15)  at DOMWorld.click (C:UserslevihDesktopweb scrapingrealEstateAgentDetailsScrapernode_modulespuppeteerlibcjspuppeteercommonDOMWorld.js:285:32)  at runMicrotasks (lt;anonymousgt;)  at processTicksAndRejections (internal/process/task_queues.js:95:5)  at async C:UserslevihDesktopweb scrapingrealEstateAgentDetailsScraperindex.js:17:5 (Use `node --trace-warnings ...` to show where the warning was created) (node:8308) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1) (node:8308) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process  with a non-zero exit code.  

Почему мне не удается найти этот выбор запроса во втором сценарии (запуск redfin.com перед переходом на конкретный домашний адрес), когда он отлично работает в первом примере? (начиная непосредственно с конкретного домашнего адреса)

Нужно ли мне делать что-либо еще после перенаправления страницы, чтобы сообщить кукловоду о поиске запросов на новой странице?

Вот страница Github, если вы хотите просмотреть полный код: https://github.com/delaroth/realEstateWebScrapper/blob/master/index.js

Комментарии:

1. Чтобы ваш вопрос было легче прочитать, пожалуйста, разместите свой код между 3 обратными ссылками, такими как: ` ваш код «