iMacros从搜索谷歌(SERP)获取TITLE和URL

时间:2016-07-18 12:13:56

标签: imacros

我无法从搜索结果中获取Google的网址,只需要获取主网址就不需要完整的网址。请帮忙。

样本SERP: googleforeducation.blogspot.com /.../示教和学习从 - everywh

想成为: googleforeducation.blogspot.com

我试过,下面是完整的脚本。谢谢。

VERSION BUILD=8871104 RECORDER=FX
TAB T=1
SET !REPLAYSPEED FAST
SET !ERRORIGNORE YES
SET !EXTRACT_TEST_POPUP NO
URL GOTO=https://www.google.co.id/search?q=%2Bblogspot.com&bav=on.2,or.&biw=1064&bih=666&dpr=1#tbs=qdr:m&q=learn+blogspot+site:blogspot.com

TAG POS={{!LOOP}} TYPE=H3 ATTR=TXT:* EXTRACT=TXT
TAG POS={{!LOOP}} TYPE=CITE ATTR=CLASS:_Rm EXTRACT=HREF
SET !EXTRACT EVAL("want to get only <something>.blogspot.com OR only main URL");

SAVEAS TYPE=EXTRACT FOLDER=* FILE=Google.csv

2 个答案:

答案 0 :(得分:1)

试试这个:

SET !EXTRACT EVAL("'{{!EXTRACT}}'.split('/')[0];")

答案 1 :(得分:1)

您的问题:在Google中运行搜索站点中的param并从结果中收集sundomains。 - 跳转到工作解决方案的最后一个代码示例 -

1)我的建议是在另一种技术而不是宏中寻找解决方案。例如,Perl + LWP获取页面源,然后使用正则表达式来解析它。

2)到目前为止,您的宏不起作用,因为您选择的元素不包含HREF标记,请使用浏览器中的“检查元素”按钮查看页面布局。 我将使用REGEX和iMacros在预定义的位置定位URL,例如始终出现在外部域中的查找旁边的TRANSLATE按钮。 (或webchache,见最后一个例子)。 下一个代码仅捕获第一个翻译按钮的子域。

SEARCH SOURCE=REGEXP:"https://translate.google.{20,50}u=http://(.{1,50}).blogspot.com/&" EXTRACT="Subdomain is $1"
PROMPT {{!EXTRACT}}

不幸的是,当尝试循环正则表达式时,分组会一直覆盖$ 1 E.G (工作不正常,但如果有人可以解决,这是更优雅的方式)

SEARCH SOURCE=REGEXP:"(?:https://translate.google.{20,50}u=http://(.{1,50}).blogspot.com/&.+?){1,6}" EXTRACT="Subdomains are $1 $2 $3 $4 $5 $6"
PROMPT {{!EXTRACT}}

?:是禁用当前分组的提取。 {1,6} 运行1至6次并提取子域。

Walkaround可能是复制代码6?8?20?倍。 这次我将使用一个不同的锚点(网络摄像头链接),无论语言如何,都应该适用于更多人。 E.G:

URL GOTO=https://www.google.co.il/?gfe_rd=cr&ei=tHCOV5S_INHb8Afd24GwCg#tbs=qdr:m&q=learn+blogspot+site:blogspot.com
SEARCH SOURCE=REGEXP:"(?:webcache.{19}com/search.q=cache:.{12}:(.{1,40}.blogspot.com)/).+?(?:webcache.{19}com/search.q=cache:.{12}:(.{1,40}.blogspot.com)/).+?(?:webcache.{19}com/search.q=cache:.{12}:(.{1,40}.blogspot.com)/).+?(?:webcache.{19}com/search.q=cache:.{12}:(.{1,40}.blogspot.com)/).+?(?:webcache.{19}com/search.q=cache:.{12}:(.{1,40}.blogspot.com)/).+?(?:webcache.{19}com/search.q=cache:.{12}:(.{1,40}.blogspot.com)/).+?(?:webcache.{19}com/search.q=cache:.{12}:(.{1,40}.blogspot.com)/).+?(?:webcache.{19}com/search.q=cache:.{12}:(.{1,40}.blogspot.com)/).+?" EXTRACT="Domains are $1,$2,$3,$4,$5,$6,$7,$8"
PROMPT {{!EXTRACT}}

最后一个是适合您的工作解决方案,但代码方面它很难看。 如果有人在谷歌更改页面布局时稍后阅读此内容,则需要在页面上“检查元素”,搜索“缓存”并稍微调整正则表达式。 如果你想要正则表达式的更多解释,我很乐意一步一步地帮助