2012-06-27 123 views
1

的ASIN數量,這可以是得到給定一個亞馬遜產品URL亞馬遜URL

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

我如何從廢料在Ruby中的URL的ASIN多少?我不善於編寫正則表達式。

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

回答

4

使用應找到匹配。這會比使用正則表達式解析URL更容易維護。看看它的Template模塊,它就是爲此目的而設計的。

查看Addressable主頁上的示例以獲取更多信息。

您也可以使用Ruby的內置URI模塊來獲取使用path的路徑,以及一個簡單的字符串拆分和一些邏輯來查看哪個元素具有「dp」,然後獲取數組中的下一個元素或「gp」並採取第二個以下元素。

+0

我仍無法從URL中提取的ASIN – Jayaram

+0

http://ideone.com/0CzX5 更新鏈接 – Jayaram

+0

它猶若鏈接無法正常工作 http://www.amazon.com/Fitbit-Wireless-Activity-Sleep-Tracker/dp/B005PUONIK/ref = pd_cp_e_3 這是發佈問題中的第二個案例 – Jayaram

2

如果你打算做了很多URL解析的,我建議你看Addressable::URI寶石: