#javascript #heroku #web-scraping #puppeteer
#javascript #heroku #очистка веб-страниц #кукловод
Вопрос:
Я пытаюсь повторить текущий номер страницы из страницы внизу этой страницы.
Мой код работает на моем локальном компьютере, но при переходе на Heroku я получаю следующую ошибку:
(узел: 23) Предупреждение о необработанном promiserejectionwarning: Ошибка: Ошибка: не удалось найти элемент, соответствующий селектору «#ListViewPagination_Bottom> div> div > span> span.selection> span»
Вот мой код:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto(
"https://www.realtor.ca/map#ZoomLevel=14amp;Center=43.744046,-79.406789amp;LatitudeMax=43.76832amp;LongitudeMax=-79.36641amp;LatitudeMin=43.71977amp;LongitudeMin=-79.44717amp;view=listamp;Sort=6-Damp;PropertyTypeGroupID=1amp;PropertySearchTypeId=1amp;TransactionTypeId=2amp;PriceMax=1500000amp;BuildingTypeId=1amp;Currency=CAD"
);
let currentPageNumber = await page.$eval(
"#ListViewPagination_Bottom > div > div > span > span.selection > span",
(element) => element.innerText
);
console.log(currentPageNumber);
await browser.close();
})();
Комментарии:
1. попробуйте получить на производстве только то
#ListViewPagination_Bottom
, что записано в консоли, и посмотрите, получите ли вы что-нибудь.2. Он возвращает значение null при производстве. В моей локальной версии он возвращает правильные данные. Есть какие-нибудь идеи, что происходит?
3. Я бы предположил, что это связано с headless: true / false. Попробуйте:
await puppeteer.launch({headless: false});
, это может сработать.4. Не повезло. Это просто приводит к сбою всей программы на Heroku.
5. вы когда-нибудь в этом разбирались?