Очистка инструментов Google Keyword с помощью CasperJS и PhantomJS - PullRequest
19 голосов
/ 22 февраля 2012

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

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

  1. Войдите в систему с моей учетной записью Google (чтобы избежать использования капч в инструментах подсказки ключевых слов).
  2. Перейдите на страницу инструментов подсказки ключевых слов.
  3. Заполните форму поиска и нажмите 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's 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 Keyword Tools не подходит для TOS, но я думаю, что этот вопрос может быть интересен всем, кто пытается очистить JavaScript / Ajax-сайт.

Ответы [ 3 ]

1 голос
/ 01 августа 2012
document.querySelector('textarea.sP3.sBFB').value = 'MY SUPER KEYWORDS';

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

1 голос
/ 22 августа 2012

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

0 голосов
/ 12 июня 2012

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

document.querySelector('textarea.OneBoxKeywordsInputPanel-input')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...