仅提取数据返回报价''(Imacros)

时间:2017-02-06 07:53:48

标签: javascript web-scraping imacros data-extraction

您好我想从这个网站提取数据:taobao.com 我唯一需要的是在商店的每个项目中提取 data-id 属性值。 我将举例说明数据源引用文件:

https://shop122418146.world.taobao.com
https://shop68989753.world.taobao.com

这是我尝试过的。

const L = "\n";
const numLines = 3;


/* --------------------- main --------------------- */
for (x = 1; x <= numLines; x++) {
        iimPlayCode (
                'SET !DATASOURCE E:\\XXX\\Taobao\\TaobaoShop.csv' + L +
                'SET !DATASOURCE_LINE ' + x + L +
                //'SET !REPLAYSPEED MEDIUM' + L
                'URL GOTO={{!COL1}}' + L +
                'WAIT SECONDS=1' + L +
                'EVENTS TYPE=KEYPRESS SELECTOR="HTML" KEYS="[40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40]"' + L +
                'WAIT SECONDS=1' + L
            );
    for (y = 1; ;y++) {
        iimPlayCode (
                'TAG POS=' + y + ' TYPE=DL ATTR=CLASS:item* EXTRACT=data-id' + L
            );
        if(iimGetLastExtract()=="#EANF#"){
            break;
        } else{
            iimPlayCode (
                'SAVEAS TYPE=EXTRACT FOLDER={{!FOLDER_DATASOURCE}}\\Taobao\ FILE=Taobao.csv' + L +
                'SET !EXTRACT NULL' + L
            );
        }
    }
}

我认为它可以很容易实现,但它只会像这些一样返回

""
""
""
""
...

有什么建议可以解决吗?

1 个答案:

答案 0 :(得分:0)

啊哈! 我正在尝试使用match()方法的另一种方法,它可以无缝地工作。

SET !EXTRACT EVAL("'{{!EXTRACT}}'.match(/-*[0-9]+/)")