2

我在这里开始有点疯狂,所以希望有人可以提供帮助。我正在尝试使用 import.io 从购物网站获取产品的名称和价格。特别是,我正在这个 URL 上进行测试:http ://www.roddandgunn.com/clothing/knitwear/Urquhart%20Peak%20Knit/Urquhart-Peak-Knit.html

但是,我无法让 import.io 发布此时仅获取产品名称的 API。我手动覆盖了 XPath,页面禁用了 javascript,但每次我尝试发布时,我都会收到“API 发布失败”错误。

这是显示 JSON 时显示的文本:

{
    "offset": 0,
    "connectorGuid": "023f6433-7553-4d17-8036-924c9434c7ba",
    "results": [
        {
            "clothing_name": "Westown Wool Coat"
        }
    ],
    "title": "Rodd & Gunn | Authentic Range - Westown Wool Coat",
    "pageUrl": "http://www.roddandgunn.com/authentic-range/Westown%20Wool%20Coat/Westown-Wool-Coat.html"
}

(右手边):

{
    "extraction": {
        "resultPipeline": [
            {
                "configuration": {
                    "property": "clothing_name",
                    "xpaths": [
                        "//h1[@itemprop='name']"
                    ]
                }
            }
        ],
        "resultXPaths": [
            "/html/body"
        ]
    },
    "urlProperties": [],
    "version": 4,
    "playback": {
        "fixHtml": true,
        "url": "${webpage/url}"
        }
}

我不知道如何进一步简化它,因此我不确定它为什么拒绝让我为它发布 API。有没有人有任何想法?

4

2 回答 2

1

import.io 的服务器位于美国,这意味着它们使用基于美国的 IP 地址。

为什么这很重要?

如果您通过美国代理服务连接到 URL(以反映 import.io 在发布时所做的操作),则显示的网站会有所不同,import.io 会被重定向,并且无法看到您的数据!

解决这个问题非常简单,(在网站上四处挖掘并使用一些代理之后)

您可以通过将以下内容添加到 URL 的末尾来告诉服务器显示正确的网站版本:

isams=setsite&wsid=2

例如: http://www.roddandgunn.com/clothing/knitwear/Urquhart%20Peak%20Knit/Urquhart-Peak-Knit.html?isams=setsite&wsid=2

它发布! https://import.io/data/mine/?id=ae62a9b1-5adb-438e-a17b-78d528a1cde2

如果你想通过提取器传递更多的 URL,你需要将它添加isams=setsite&wsid=2到你想要提取的其他 URL 中。

于 2015-08-03T09:11:02.807 回答
0

您可以在训练 Extractor 时在页面上启用 Javascript。在Detect Optimal Settings上,选择No然后

检测最佳设置

检测最佳设置将通过首先关闭 cookie 和 javascript 来更改浏览器的设置,以便系统有最佳机会提取数据。

于 2015-07-21T02:16:36.543 回答