如何使用 iMacros - xPath 访问 HTML DOM 属性
How to access HTML DOM Property using iMacros - xPath
iMacros 版本:10.0.2.1450(免费),Firefox,WIndow10
您好,
objective是提取每个显示的图片的HTMLDOM属性的id,href和data-download-file-url的值来自这个website。我相信 XPATH 将适合这项任务,因为每个图像都可以通过以下泛化 XPATH
/html/body/main/section[2]/div/div/figure[X]/div
大写X表示图片标签,取值1到50,为上述网站。
我知道,要提取图1的属性,例如可以通过
TAG XPATH="/html/body/main/section[2]/div/div/figure[1]" EXTRACT=TXT
但是,上面的行输出了所有 DOM 属性 包括我不感兴趣的那个。
根据下面的教程;
[OP1][https://forum.imacros.net/viewtopic.php?t=26155]
[OP2][
提取特定的DOM 属性可以通过类似下面的方式实现
TAG XPATH="/html/body/main/section[2]/div/div/figure[1]/div[@id='showcase__content'] " EXTRACT=TXT
然而执行却报错
如果有人能阐明这个问题,我将不胜感激。
图 1 的 DOM 属性 示例。所有属性均为粉红色。
https://drive.google.com/open?id=190q615C3uXLZUQNI8K4AJYL3Slii1ktO
您的 XPath 包含错误(@id 而不是 @class)。用 :
修复它
//figure[1]/div[@class='showcase__content']
要访问 url 下载文件,应该是:
//figure[1]/div[@class='showcase__content']//@data-download-file-url
编辑:要从特定属性中获取值,您必须使用 HTM 函数从元素中提取代码,然后使用正则表达式。可以直接提取HREF属性。
我不是 imacros 用户,所以我的代码可能不是最聪明的:
VERSION BUILD=1005 RECORDER=CR
URL GOTO=https://www.freepik.com/search?dates=any&format=search&page=1&query=Polygonal%20Human&sort=popular
TAG XPATH="//figure[1]/div[@class='showcase__content']/a" EXTRACT=HREF
SET !VAR3 {{!EXTRACT}}
TAG XPATH="//figure[1]/div[@class='showcase__content']/a" EXTRACT=HTM
SET !VAR1 EVAL("var regex = /url=\"(.+?)\"/; var str = '{{!EXTRACT}}';str.match(regex)[1];")
SET !VAR2 EVAL("var regex = /id=\"(.+?)\"/; var str = '{{!EXTRACT}}';str.match(regex)[1];")
PROMPT {{!VAR1}}
PROMPT {{!VAR2}}
PROMPT {{!VAR3}}
旁注:imacros 的免费用户仅限于 3 个声明变量(!VAR1 到 3)。您可能需要循环和 SET !EXTRACT_TEST_POPUP NO 来实现您的最终目标。
iMacros 版本:10.0.2.1450(免费),Firefox,WIndow10
您好, objective是提取每个显示的图片的HTMLDOM属性的id,href和data-download-file-url的值来自这个website。我相信 XPATH 将适合这项任务,因为每个图像都可以通过以下泛化 XPATH
/html/body/main/section[2]/div/div/figure[X]/div
大写X表示图片标签,取值1到50,为上述网站。
我知道,要提取图1的属性,例如可以通过
TAG XPATH="/html/body/main/section[2]/div/div/figure[1]" EXTRACT=TXT
但是,上面的行输出了所有 DOM 属性 包括我不感兴趣的那个。
根据下面的教程;
[OP1][https://forum.imacros.net/viewtopic.php?t=26155]
[OP2][
提取特定的DOM 属性可以通过类似下面的方式实现
TAG XPATH="/html/body/main/section[2]/div/div/figure[1]/div[@id='showcase__content'] " EXTRACT=TXT
然而执行却报错
如果有人能阐明这个问题,我将不胜感激。
图 1 的 DOM 属性 示例。所有属性均为粉红色。 https://drive.google.com/open?id=190q615C3uXLZUQNI8K4AJYL3Slii1ktO
您的 XPath 包含错误(@id 而不是 @class)。用 :
修复它//figure[1]/div[@class='showcase__content']
要访问 url 下载文件,应该是:
//figure[1]/div[@class='showcase__content']//@data-download-file-url
编辑:要从特定属性中获取值,您必须使用 HTM 函数从元素中提取代码,然后使用正则表达式。可以直接提取HREF属性。
我不是 imacros 用户,所以我的代码可能不是最聪明的:
VERSION BUILD=1005 RECORDER=CR
URL GOTO=https://www.freepik.com/search?dates=any&format=search&page=1&query=Polygonal%20Human&sort=popular
TAG XPATH="//figure[1]/div[@class='showcase__content']/a" EXTRACT=HREF
SET !VAR3 {{!EXTRACT}}
TAG XPATH="//figure[1]/div[@class='showcase__content']/a" EXTRACT=HTM
SET !VAR1 EVAL("var regex = /url=\"(.+?)\"/; var str = '{{!EXTRACT}}';str.match(regex)[1];")
SET !VAR2 EVAL("var regex = /id=\"(.+?)\"/; var str = '{{!EXTRACT}}';str.match(regex)[1];")
PROMPT {{!VAR1}}
PROMPT {{!VAR2}}
PROMPT {{!VAR3}}
旁注:imacros 的免费用户仅限于 3 个声明变量(!VAR1 到 3)。您可能需要循环和 SET !EXTRACT_TEST_POPUP NO 来实现您的最终目标。