RCurl для использования в Google Adwords

Я хотел бы загружать данные, относящиеся к ключевым словам, прямо в/из R. Я понимаю, что RCurl, скорее всего, будет подходящим способом, но я не уверен, как выполнить эту задачу. Может быть, кто-нибудь здесь сможет направить меня на правильный путь?

PS. Я могу немного отредактировать этот вопрос по мере поступления ответов, потому что у меня есть некоторые идеи о том, как я могу загрузить данные Adwords с помощью R; однако идеи неясны, и любые ответы, вероятно, сделают их более ясными.

Большое спасибо.


EDIT: моя попытка

Вот что я пробовал до сих пор.

1. примените getURL к URL-адресу входа, чтобы определить ids полей электронной почты и пароля.

require(RCurl)
loginURL<- "https://accounts.google.com/ServiceLogin?service=adwords"
ch<- getCurlHandle()
curlSetOpt(curl=ch,ssl.verifypeer=FALSE,cainfo=system.file("CurlSSL", "cacert.pem", package = "RCurl"),cookiejar="./cookies.txt",cookiefile="./cookies.txt",verbose=TRUE,header=TRUE,followlocation=TRUE,autoreferer=TRUE)

try1<- getURL(loginURL,curl=ch)

2. Я определил ids важных полей (адрес электронной почты и пароль)

<div class="email-div">
  <label for="Email"><strong class="email-label">Email</strong></label>
  <input type="email" spellcheck="false"  

  name="Email" id="Email" value=""

    >
</div>
<div class="passwd-div">
  <label for="Passwd"><strong class="passwd-label">Password</strong></label>
  <input type="password" name="Passwd" id="Passwd"

3. Затем я использовал указанные выше поля, чтобы применить функцию postForm к loginURL для входа в Google Adwords.

params<- list(
"Email"="myemail",
"Passwd"="mypassword",
"GALX"="3b6rR7Jvk30")

loggedIn<- postForm(loginURL,.params=params,curl=ch)

Однако я понятия не имею, как убедиться, что я успешно вошел в систему.

Кроме того, URL-адрес инструмента планировщика Kyeword в пользовательском интерфейсе Google Adwords:

https://adwords.google.com/ko/KeywordPlanner/Home?__c=XXXXXXXXXX&__u=XXXXXXXXXX&__o=cues

где c= отражает customer id, а u= отражает user id. Учитывая это, я подумал о том, чтобы войти в систему с помощью моего браузера, вставить URL-адрес, показанный выше, в R, а затем попытаться узнать идентификаторы полей, которые мне будут важны, например, идентификатор для keywords text box в инструменте Планировщика ключевых слов, в который я мог бы отправить ключевые слова из R.

Но когда я пытаюсь применить getURL на вышеупомянутом веб-сайте, я не получаю требуемых/ожидаемых xml tags или key value pairs. Вместо:

<html><head><noscript><meta http-equiv="refresh" content="0; URL=https://adwords.google.com/select/interstitial_short_js.html"></noscript></head><body><script type="text/javascript" language="javascript">var jsRedirect = true;var url = "/um/StartNewLogin?dst=/ko/KeywordPlanner/Home?__c%3D7857647860%26__u%3D4575929980%26__o%3Dcues";
if (self.document.location.hash) {url = url + ((url.indexOf('?') == -1)? '?' : '&') + "frag=" + self.document.location.hash.substring(1); }
window.location.assign(url);
</script> </body> </html>

Это наводит меня на мысль, что здесь я, вероятно, имею дело с Javascript или AJAX. Итак, как извлечь данные из Javascript или AJAX с помощью RCurl, и правильно ли задавать этот вопрос?

Спасибо и извинения за длинное редактирование.


person info_seekeR    schedule 25.12.2013    source источник
comment
Для этих целей предоставляется API Google Adwords для многих языков (Python, Java, Ruby и т. д.), developers.google.com/adwords/api/docs/guides/awql вы можете попытаться связать R с одним из этих API, используя вспомогательную библиотеку или загрузив данные локально в формате csv и импортировав их. в р   -  person Luca Fiaschi    schedule 15.02.2014
comment
@LucaFiaschi, спасибо. Собственно, это то, над чем я работаю в эти дни. Это немного сложно для меня, так как я относительно новичок, но, надеюсь, у меня все получится. И когда я это сделаю, я свяжу свои усилия с этим вопросом, чтобы помочь другим пользователям.   -  person info_seekeR    schedule 16.02.2014
comment
@info_seekeR, у тебя получилось?   -  person David Arenburg    schedule 06.07.2014
comment
@DavidArenburg, к сожалению, нет, и с тех пор я был в стороне от этой задачи. Я ищу сотрудников, которые могли бы помочь, но это в стороне.   -  person info_seekeR    schedule 06.07.2014
comment
Это очень плохо, я тоже ищу решение для этого   -  person David Arenburg    schedule 06.07.2014
comment
@DavidArenburg, да, приношу свои извинения. Это просто AJAX, который мне слишком сложно «расшифровать» при доступе к API AdWords с помощью RCurl. Я поищу еще соавторов, и как только решение будет найдено, я сообщу здесь, и, возможно, даже сделаю его пакетом.   -  person info_seekeR    schedule 06.07.2014
comment
А пока есть cran.r-project.org/web/packages/ RAdwords/index.html   -  person Matt Bannert    schedule 13.02.2018


Ответы (2)


Вы уже видели наш пакет RAdwords?

Он обеспечивает процесс аутентификации для R с API Adwords и интерфейс для загрузки данных из API Adwords непосредственно в R.

Пример кода для загрузки данных ключевых слов:

#install package from CRAN
install.packages('RAdwords')
#load package
library(RAdwords)
#start authentication process
google_auth <- doAuth()
#build statement object
body <- statement(select=c('AccountDescriptiveName','Date', 'CampaignName', 'AdGroupName','KeywordText', 'KeywordMatchType', 'Clicks', 'Cost'),
                  report="KEYWORDS_PERFORMANCE_REPORT",
                  start="20140320",
                  end="20140321")
#download data as data frame
data <- getData(clientCustomerId='xxx-xxx-xxxx',
                google_auth = google_auth,
                statement=body,
                transformation = T)
#all available report types
reports()
#all available metrics of specific report type
metrics("KEYWORDS_PERFORMANCE_REPORT")
person jburkhardt    schedule 09.02.2015

У меня недостаточно репутации, чтобы комментировать (смешно!), Отсюда и этот ответ.

Мой ответ относится к части вашего вопроса о том, как проверить результат входа в систему. Я бы сделал это следующим образом:

loggedIn<- postForm(loginURL, .params=params, curl=ch)

info <- getCurlInfo(ch)

# 1) check the value of info$response.code here and act accordingly
# 2) you probably need the value to be 200 or between 200 and 300, but for more details
# on HTTP status codes, see this page: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
person Aleksandr Blekh    schedule 06.03.2014
comment
Благодарю вас! Просто для информации для вас и других пользователей: я пытаюсь получить доступ к Adwords с помощью R (как это сделали другие для Google Analytics), и если мне это удастся, я опубликую свой код здесь. - person info_seekeR; 09.04.2014