用于 Google Adwords 的 RCurl

Posted

技术标签:

【中文标题】用于 Google Adwords 的 RCurl【英文标题】:RCurl for use in Google Adwords 【发布时间】:2013-12-25 22:52:57 【问题描述】:

我想将与关键字有关的数据直接下载到 R 中/从 R 中下载。我知道 RCurl 很可能是要走的路,但我不确定如何继续这项任务。也许这里的任何人都可以让我走上正轨?

PS。当答案涌入时,我可能会稍微编辑这个问题,因为我对如何使用 R 下载 Adwords 数据有一些想法;但是,这些想法并不清楚,任何答案都可能会使它们更清楚。

非常感谢。


编辑:我的尝试

以下是我到现在为止的尝试。

1. 在登录 URL 上应用 getURL 以识别电子邮件和密码字段的 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.然后我使用上述字段在loginURL 应用postForm 函数以登录Google Adwords

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

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

但是,我不知道如何验证我是否已成功登录。

另外,Google Adwords UI 中关键字规划工具的网址是:

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

c= 反映customer id,u= 反映user id。鉴于此,我想做的是使用我的浏览器登录,将上面显示的 URL 粘贴到 R 中,然后尝试找出与我相关的字段的 id,例如keywords text box 在关键字规划工具中,我可以将 R 中的关键字发送到该工具。

但是当我尝试在上述网站上申请getURL 时,我没有得到所需/预期的xml tagskey 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>

这让我觉得我可能在这里处理JavascriptAJAX。 那么,如何使用RCurlJavascriptAJAX 中提取数据,这是要问的正确问题吗?

感谢并为冗长的编辑道歉。

【问题讨论】:

为此目的,为多种语言(Python、Java、Ruby 等...)提供了谷歌 Adwords API,developers.google.com/adwords/api/docs/guides/awql 您可以尝试使用一些帮助程序库将 R 与其中一个 API 接口或在 csv 中本地下载数据并在 R 中导入 @LucaFiaschi 谢谢。确实,这就是我这些天正在做的事情。这对我来说有点难,因为我是一个初学者,但希望我能成功。当我这样做时,我会将我的努力与这个问题联系起来以帮助其他用户。 @info_seekeR,你成功了吗? @DavidArenburg 不幸的是没有,从那以后我就远离了这项任务。我正在寻找可以提供帮助的合作者,但这是一个问题。 太糟糕了,我也在寻找解决办法 【参考方案1】:

您在此期间看过我们的RAdwords 包裹吗?

它提供了一个使用 Adwords API 对 R 进行身份验证的过程,并提供了一个接口以将数据从 Adwords API 直接加载到 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")

【讨论】:

【参考方案2】:

我没有足够的声誉来发表评论(荒谬!),因此这个答案。

我的回答与您关于如何验证登录结果的问题有关。我会这样做:

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

【讨论】:

谢谢!只是为了您和其他用户的信息,我正在尝试使用 R 访问 Adwords(就像其他人为 Google Analytics 所做的那样),如果我成功了,我将在这里发布我的代码。

以上是关于用于 Google Adwords 的 RCurl的主要内容,如果未能解决你的问题,请参考以下文章

google adwords api + 获取所有关键字

Adwords Java 集成

触发 google adwords 转换 jquery

Google Adwords 转换代码会产生空白?

如何开始使用 Google AdWords API?

Google Adwords 和 Node.js:库还是访问 API 的不同方式?