Имитация щелчка перед

У меня есть веб-сайт, с которого я пытаюсь собрать данные с https://www.shapiro-ingle.com/sales.aspx?state=NC. К сожалению, мне приходится нажимать «Поиск», прежде чем таблица на странице будет заполнена нужной мне информацией. URL-адрес также остается прежним. Итак, когда я запускаю выборку, чтобы получить исходный код, он не включает данные, которые мне нужны.

Есть ли простой способ вызвать что-то вроде document.getElementById("SubmitBtn").click(); загрузить нужные мне данные до того, как произойдет httpResponse?

  export function data_scrape(url) {
       return fetch(url, {method: 'get'})
      .then( (httpResponse) => {
        if (httpResponse.ok) {
          return httpResponse.text();
      } else {
        return "Error";
      }
      });
    }

person David Seroy    schedule 07.08.2018    source источник


Ответы (1)


Создайте событие мыши и отправьте его нужному элементу

var elem = document.getElementById("SubmitBtn")
var click = new MouseEvent('click', {
    view: window
});
elem.dispatchEvent(click);

РЕДАКТИРОВАТЬ:

Отправить POST в конечную точку формы

// db can be upcoming_sales or sales_held
// county can be any of the options in the drop down
var data = "db=upcoming_sales&county=Alamance" 

fetch(url, {
    method: "POST"
    headers: {
        "Content-Type": "application/x-www-form-urlencoded",
    },
    body: JSON.stringify(data),
}).then(...)
person Aaron Leon    schedule 07.08.2018
comment
Я понимаю этот код как автономный, но не могли бы вы уточнить, как мне на самом деле интегрировать его в мой код выборки? - person David Seroy; 07.08.2018
comment
Ах я вижу. Ваш первоначальный вопрос был неясен. Я думал, вы пытаетесь имитировать событие клика с помощью безголового браузера. Если все, что вам нужно, — это получить данные, заполняющие таблицу, отправьте запрос POST в /sales.aspx?state=NC со следующими полями, закодированными в форме: db, county. Я понял это, используя «Проверить элемент» в Chrome, что форма отправляет эти поля в эту конечную точку при отправке. - person Aaron Leon; 07.08.2018
comment
Потрясающе, имеет смысл. Спасибо за дополнительную информацию и код! - person David Seroy; 07.08.2018