MyTetra Share
Делитесь знаниями!
Как вытаскивать ASIN из URL'ов на amazon.com и отображать их
Время создания: 05.04.2012 01:20
Раздел: Компьютер - Программирование - Java Script - Greasymonkey
Запись: xintrea/mytetra_syncro/master/base/1333574453bg9kzbj7w4/text.html на raw.github.com

Сегодня (вернее, уже вчера) мне попался заказчик, которому нужен был скрипт для Greasemonkey, который бы мог вытаскивать ASIN из URL'ов на amazon.com и отображать их.

Задачка довольно простая, но подобный тип задач встречается довольно часто. Поэтому привожу готовое решение.

// ==UserScript==

// @name Amazon ASIN Extractor

// @namespace http://sjinks.org.ua/

// @include http://www.amazon.com/*

// @include http://amazon.com/*

// ==/UserScript==

var links = document.evaluate(

'(//div[contains(@id, "title_")]/a[contains(@href, "/dp/")])|(//strong[@class="sans"]/a[contains(@href, "/dp/")])|(//td[@class="dataColumn"]//td/a[contains(@href, "/dp/")])',

document,

null,

XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,

null

);

for (var i=0; i<links.snapshotLength; ++i) {

var a = links.snapshotItem(i);

var href = a.getAttribute('href');

var t = href.match(/\/dp\/([A-Z0-9]{10})\//);

if ('undefined' != typeof t[1] && 10 == t[1].length) {

var div = document.createElement('div');

var strong = document.createElement('strong');

strong.appendChild(document.createTextNode('ASIN: '));

div.appendChild(strong);

div.appendChild(document.createTextNode(t[1]));

a.parentNode.insertBefore(div, a.nextSibling);

}

}

Для модификации для другого сайта просто меняется XPath внутри document.evaluate(), @include, регулярное выражение в href.match() и проверка в if.

 
MyTetra Share v.0.59
Яндекс индекс цитирования