从亚马逊URL获取ASIN号码

时间:2012-06-27 20:07:52

标签: ruby regex amazon-web-services

给出一个亚马逊产品网址,可以是

http://amazon.com/gp/product/ASIN/*
http://amazon.com/*/dp/ASIN/*
http://amazon.com/dp/ASIN/*

如何从Ruby中的URL中删除ASIN编号?我不擅长写正则表达式。

2 个答案:

答案 0 :(得分:5)

使用应该通过以下方式找到匹配:

scan(/https?:\/\/(?:www\.|)amazon\.com\/(?:gp\/product|[^\/]+\/dp|dp)\/([^\/]+)/)

答案 1 :(得分:2)

如果您要进行大量的URL解析,我建议您查看Addressable::URI gem。与使用正则表达式解析URL相比,它将使维护更容易。看一下它的Template模块,它就是为此而设计的。

查看主Addressable页面上的示例以获取更多信息。

您还可以使用Ruby的内置URI模块,使用path获取路径,以及一个简单的字符串拆分和一些逻辑来查看哪个元素具有“dp”然后获取数组中的下一个元素或“gp”并获取第二个元素。