我在Google SERP頁面上使用iMacro通用搜索結果進行搜索。這些主要是新聞和圖像。我找到div class
(用於新聞)和div id
(用於圖像),然後過濾出口和寫入URL到導出文件。類和id的名稱通常不會被Google修改,所以與它們的關係是穩定和充足的。使用iMacro獲取SERP上特定搜索結果的編號
這個工作,就像它應該一樣,獨立於SERP上的哪個位置(帶有新聞或圖像的div)出現。然而,onebox可以出現在不同的SERP位置上:在第一個有機結果之前,第二和第三等等。
問題:通用搜索結果,特別是新聞,圖片和本地包可以出現在SERP上的不同位置:在第一個有機結果之前,在第一個和第二個,第二個和第三個之間,九個和十個之間,截圖:
32,我想iMacro 跟蹤的onebox實施的地方,並將其寫入到同一個文件中,其中排名的網址寫的第二列。 I. e。如果新聞第一有機結果出現之前,我想1,如果在第一與第二 - 2,九到十個 - 10
這裏是我的iMacros,爲NewsBox中:
SET !ERRORIGNORE YES
TAB T=1
TAB CLOSEALLOTHERS
URL GOTO=https://www.google.de/?gws_rd=ssl
TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:f ATTR=NAME:q CONTENT=iphone
TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:tsf ATTR=TYPE:submit
TAG POS=1 TYPE=DIV ATTR=CLASS:"mnr-c _yE" EXTRACT=HTM
SET !EXTRACT EVAL("'{{!EXTRACT}}'.match(/href="([^\'\"]+)/g);")
SAVEAS TYPE=EXTRACT FOLDER=* FILE=links.csv
編輯: 編輯和使用JavaScript代碼,現在看起來像我: var macro;
macro ="CODE:";
macro +="TAG POS=1 TYPE=H3 ATTR=CLASS:"r" EXTRACT=HTM";
iimPlay(macro)
table=iimGetLastExtract();
table=table.split("<tr>");
for(var t=0;t<table.length;t++)
{
if(table[t].indexOf('class="mnr-c _yE"')!=-1)
{
var position=t;
position++;
break;
}
}
alert(position);
但得到一個錯誤:
SyntaxError: missing ; before statement, line NaN (Error code: -991)
每個搜索結果被放置的<div class="g"></div>
內部,等等SERP用10個有機搜索結果是10角這樣的div
秒。這可能是如何獲得搜索結果的數量,之後或之前出現的onebox - 要計數,之前出現了多少個div class="g"
。但我錯過技能實現代碼:(
它的工作原理已經差不多如此,只有一點例外:它將提取與Google自己的屬性searchnumber相關聯,但Google向SERP上的所有div提供了即將到來的數字,並且我得到的結果類似於'214和215'。每個SERP頁面上searchnumbers的擴展是不同的,所以不可能根據它們進行計算。是否有可能僅與'
'有關,SERP頁面上最多有10個? –'Searchnumbers'是我自己在宏的第三行設置的屬性(它們不是Google的)。我不知道你爲什麼會得到像214到215之間的提示。提供頁面鏈接發生的地方。 – Shugar
哈哈!我剛剛查看了SERP源代碼,並認爲,哇,谷歌給頁面上的每個div的數字:) :)我已經修改了你的代碼一點點,而不是'getElementsByTagName',而是'getElementsByClassName',現在我得到了正確的號碼,至少是第一個號碼,之後出現了OneBox。您可以將代碼加入問題中上面的第一個iMacro部分,因此iMacro將提示中的數字寫入一列,並將其提取到第二列提取的URL中? –