То, что вы видите, - это веб-сайт, использующий Javascript для обновления информации на странице вместо загрузки нового URL-адреса для нее.
Чтобы получить необходимую информацию, обычных HTTP-запросов будет недостаточно: вынужно будет использовать то, что мы называем безголовый браузер .По сути, вы напишите код, который запускает веб-браузер без интерфейса и делает все, что вы хотите в нем.
Используя это, вы сможете выполнить такой сценарий:
- Посетите https://example.com
- Нажмите на элемент, имеющий класс "class1"
- Ожидание загрузки новой страницы
- Захватите содержимое элемента с идентификатором "id2"
И эффективно получите все необходимые данные.Это будет намного больше ресурсов процессора / памяти, чем HTTP-запросы, но вы не сможете обойти это в описанном вами сценарии.
В последнее время моим любимым является puppeteer .
Вот рабочий фрагмент, использующий Puppeteer, делающий именно то, что вы пытались сделать.Я пропустил опцию headless: false
, чтобы вы могли видеть, что происходит.
const puppeteer = require("puppeteer");
(async() => {
const browser = await puppeteer.launch({headless: false, args: ['--no-sandbox']});
const page = await browser.newPage();
await page.goto("https://www.amazon.com/dp/B072HW9W92/");
await page.click(".nav-a.nav-a-2.a-popover-trigger");
await page.waitFor(500);
await page.click(".a-button-text.a-declarative[role='radiogroup']");
await page.waitFor(500);
await page.click(`[data-value='{"stringVal":"CA"}']`);
await page.waitFor(500);
await page.click(`[name='glowDoneButton']`);
})();
А вот и гиф этого дела:
![Puppeteer on Amazon](https://i.stack.imgur.com/zdrTW.gif)