Web scraping 如何使用iMacros从同一元素的标签POS=x在不同网页之间可变的网站中提取数据?

Web scraping 如何使用iMacros从同一元素的标签POS=x在不同网页之间可变的网站中提取数据?,web-scraping,imacros,Web Scraping,Imacros,我希望通过根据datasource.csv中定义的关键字列表在网站中搜索,从包含多个网页的网站中提取数据 iMacro应按顺序进入每个单独的页面,获取每个网页上的某些元素,并将数据保存在csv中。要提取的元素在所有网页之间是相同的 我的问题是,当从一个网页移动到另一个网页时,元素的标记POS=x并不保持不变 e、 g在页面上,HTML标记元素具有标记POS=95 TYPE=SPAN ATTR=*EXTRACT=TXT, 而在另一个页面上,相同的HTML标记元素更改为tagpos=96 TYPE=

我希望通过根据datasource.csv中定义的关键字列表在网站中搜索,从包含多个网页的网站中提取数据

iMacro应按顺序进入每个单独的页面,获取每个网页上的某些元素,并将数据保存在csv中。要提取的元素在所有网页之间是相同的

我的问题是,当从一个网页移动到另一个网页时,元素的标记POS=x并不保持不变

e、 g在页面上,HTML标记元素具有
标记POS=95 TYPE=SPAN ATTR=*EXTRACT=TXT
, 而在另一个页面上,相同的HTML标记元素更改为
tagpos=96 TYPE=SPAN ATTR=*EXTRACT=TXT

我认为唯一的可能性是通过它们的文本属性(我指的是它们的文本)来选择元素

问题: 像
TXT:Manufacturer
(或最终
TXT:Manufacturer*
)这样的TXT参数是否允许在不知道确切标记位置的情况下进行选择

是否有其他解决方案可以使用iMacros进行这种提取?(页面上相同html元素的标记位置可变)

谢谢。

(1)一般来说,这取决于一个被刮掉的网站。但是,您可以尝试以下命令:

TAG POS=1 TYPE=SPAN ATTR=TXT:Manufacturer* EXTRACT=TXT
(2) 如果您确切知道这些标记位置,以下代码也可能会有所帮助:

SET !ERRORIGNORE YES
SET !TIMEOUT_STEP 0
TAG POS=95 TYPE=SPAN ATTR=* EXTRACT=TXT
TAG POS=96 TYPE=SPAN ATTR=* EXTRACT=TXT
' other commands with extraction
SET !TIMEOUT_STEP 6
SET !ERRORIGNORE NO
SET !EXTRACT EVAL("'{{!EXTRACT}}'.replace(/\\[EXTRACT\\]|#EANF#/g, '').trim();")
(1) 一般来说,这取决于一个网站是刮。但是,您可以尝试以下命令:

TAG POS=1 TYPE=SPAN ATTR=TXT:Manufacturer* EXTRACT=TXT
(2) 如果您确切知道这些标记位置,以下代码也可能会有所帮助:

SET !ERRORIGNORE YES
SET !TIMEOUT_STEP 0
TAG POS=95 TYPE=SPAN ATTR=* EXTRACT=TXT
TAG POS=96 TYPE=SPAN ATTR=* EXTRACT=TXT
' other commands with extraction
SET !TIMEOUT_STEP 6
SET !ERRORIGNORE NO
SET !EXTRACT EVAL("'{{!EXTRACT}}'.replace(/\\[EXTRACT\\]|#EANF#/g, '').trim();")

您可以使用如下所示的标记。因此,下面的标记将提取文本,该文本的属性以“Manufacturer”开头,而与位置无关

TAG POS=* TYPE=SPAN ATTR=TXT:Manufacturer* EXTRACT=TXT

您可以使用如下所示的标记。因此,下面的标记将提取文本,该文本的属性以“Manufacturer”开头,而与位置无关

TAG POS=* TYPE=SPAN ATTR=TXT:Manufacturer* EXTRACT=TXT

正则表达式是个好主意。可以应用于不同的场景。谢谢。我发现了另一个解决方案,虽然与相对定位。我注意到一个标签有一个共同的位置,我使用了相对定位和文本属性。可以应用于不同的场景。谢谢。我发现了另一个解决方案,虽然与相对定位。我注意到一个标签有一个公共位置,我使用了相对定位和文本属性。