2014-02-11 24 views
2

无论是使用PHP,Javascript还是使用亚马逊产品广告API,我都不在乎......我可以全部使用它们。我已经环顾四周,发现其他一些相同的问题,但他们没有我能看到的工作答案。从粘贴的亚马逊网址获取ASIN

有没有人管理这么?最好的情况下,亚马逊已经添加了一个API的功能,你可以通过它传递一个URL并返回页面的ASIN和其他产品信息。

+0

只是出于兴趣 - “从亚马逊网址粘贴”是什么意思?有人将url粘贴到文本框中? – Trent

+0

是的。我的网页上有一个可以粘贴网址的文本框。 –

+0

它看起来像什么?当然,你可以用正则表达式来实现它? – Trent

回答

0

挑战在于亚马逊网址并非单一格式,根据所用标识符的种类和产品种类的不同,存在各种类型。

标识符或密钥可以是ASIN或其他种类的产品标识符,例如,

有效值:SKU | UPC | EAN | ISBN(仅限美国,当搜索索引是Books时)。 UPC在CA语言环境中无效。 (经由http://docs.aws.amazon.com/AWSECommerceService/latest/DG/ItemLookup.html

亚马逊网址常常(但不总是)形式产物的 http://www.amazon.com/(title)/ DP /(标识符)/(更随机字符不相关这里)的。

除了/ dp /之外,您还可以看到/ product /,/ ASIN /,/ e /。

最好的办法是使用正则表达式来提取(标识符),然后调用亚马逊物品查找API,将所有各种类型作为IdType传递,并将标识符作为ItemID传递,并查看匹配的内容。

没有更多的细节或特定的用例,不可能知道URL是否有ASIN,ISBN,SKU或其他类型的标识符,因此您必须针对所有这些标识进行查询,查看匹配的内容,并从Item Lookup返回负载中提取ASIN。

3

我用下面的正则表达式在我的基于PHP的网站的会员我的钱链接,它可能不是完美的,但工作得很好:

/(?:dp|o|gp|-)\/(B[0-9]{2}[0-9A-Z]{7}|[0-9]{9}(?:X|[0-9]))/ 

本质上,它寻找一个ASIN或ISBN样串在执行以下任一操作后:“dp /”,“o /”,“gp /”或“ - /”以避免误报。 “ - /”可以使用旧的“obidos”格式化链接 - 即使Amazon不再生成它们,它们仍然可以解析。它仅捕获ASIN/ISBN,因此$ matches [0]将始终包含正确的字符串(在php中)。未在非美国的链接上进行测试。我没有看过它,ASIN格式或url模式可能会有所不同。

0

而且 - 亚马逊鼓励使用缩短的永久链接的形式:http://amzn.to/xxxxxxx

这些都是简单的HTTP重定向301,你不得不为了得到包含ASIN完整链接可循。