Подтвердить что ты не робот

Скремблирование инструментов подсказки ключевых слов с помощью CasperJS и PhantomJS

В настоящее время я пытаюсь очистить инструменты подсказки ключевых слов с помощью CasperJS и PhantomJS (оба отличных инструмента, спасибо n1k0 и Ariya), но Я не могу заставить его работать.

Вот мой текущий процесс:

  • Войдите в мою учетную запись Google (чтобы избежать кавычек в инструментах ключевых слов).
  • Перейдите на страницу инструментов ключевых слов.
  • Заполните форму поиска и нажмите Search.

Я застрял на шаге 3: форма поиска не является обычной формой HTML, я не могу использовать Casper#fill(), поэтому вместо этого я напрямую обращаюсь к полям. Вот некоторые из синтаксисов, которые я пытался изменить значение поля Word or phrase:

this.evaluate(function() {

    // Trying to change the value...
    document.querySelector('textarea.sP3.sBFB').value = 'MY SUPER KEYWORDS';
    document.querySelector('textarea.sP3.sBFB').setAttribute('value', 'MY SUPER KEYWORDS');
    document.querySelector('textarea').value = 'MY SUPER KEYWORDS';   // there only one <textarea> on the page

    // Trying to change other attributes...
    document.querySelector('textarea.sP3.sBFB').textContent = 'MY SUPER KEYWORDS';
    document.querySelector('textarea').style.backgroundColor = 'yellow';
});

Ничего не работает. Я делаю Casper#capture() сразу после просмотра того, что содержит поле. Как вы можете видеть, он подтверждает, что я нахожусь на правильной странице и что я вошел в систему, но <textarea> пуст.

Странно, я могу получить доступ к другим частям DOM: я мог бы изменить текст ссылки, в которой Advanced Options and Filters - ___VINCE SAYS HELLO___ (см. захват), выполнив следующие действия:

this.evaluate(function() {
    document.querySelector('a.sLAB').textContent = '___VINCE SAYS HELLO___';
});

PS. Я знаю, что скремблировать инструменты ключевых слов Google против TOS, но я думаю, что этот вопрос может представлять интерес для всех, кто пытается очистить сайт JavaScript/Ajax-heavy.

4b9b3361

Ответ 1

document.querySelector('textarea.sP3.sBFB').value = 'MY SUPER KEYWORDS';

Вы не можете использовать elt.value в текстовом поле. Вы пытались использовать elt.textContent?

Ответ 2

Почему вы пытаетесь очистить результаты. Google уже создает для нас файл csv. Попробуйте загрузить это. Этот селектор ссылок должен быть как $('. Gux-combo gux-dropdown-c.sJK') Используете ли вы это для автоматизации?

Ответ 3

Я не уверен, что происходит здесь, но классы, которые вы используете для таргетинга, для меня разные. Текстовое поле OneBoxKeywordsInputPanel-input, которое, как я предполагаю, вы пытаетесь настроить, имеет второй класс, sPFB и другие классы. Возможно, что эти криптографические классы каким-то образом динамичны. Вместо этого я бы рекомендовал использовать более описательные имена классов. Следующие работы подходят для меня:

document.querySelector('textarea.OneBoxKeywordsInputPanel-input')