Esto puede ser un enfoque simplista, pero todavía tienen que encontrar un error en ella usando cualquiera de la URL del proporcionada en este hilo de la gente es un problema.
Simplemente, tomo la URL, la divido en "/" para obtener las partes discretas. A continuación, recorra los contenidos de la matriz y rebánelos de la expresión regular. En mi caso, la variable i representa un objeto que tiene una propiedad llamada RawURL para contener la url en bruto con la que estoy trabajando y una propiedad llamada VendorSKU que estoy poblando.
try
{
string[] urlParts = i.RawURL.Split('/');
Regex regex = new Regex(@"^[A-Z0-9]{10}");
foreach (string part in urlParts)
{
Match m = regex.Match(part);
if (m.Success)
{
i.VendorSKU = m.Value;
}
}
}
catch (Exception) { }
Hasta ahora, esto ha funcionado a la perfección.
Una forma más posible: amazon.com/exec/obidos/asin/B0015T963C. Solo para ser completamente completo, la expresión regular podría extenderse con 'dp | gp/product | exec/obidos/asin'. – jpsimons
Basándose en esto, y la adición de soporte para caracteres internacionales, puertos impares, https, dominios que no son estadounidenses, y los parámetros de consulta/seguimiento (y estoy usando Java) sería: Patrón asinPattern = Patrón \t \t \t .compile ("^ (http [s]?: //)? ([\\ w.-] +) (: [0-9] +)?/([\\ w-%] + /)? (dp | gp/product | exec/obidos/asin)/(\\ w + /)? (\\ w {10}) (. *)? $ "); –
Incluso después de la actualización de @ JasonThrasher, todavía no funcionaba para la url: https://www.amazon.com/gp/aw/d/B00W36QH4C?me= & ref = olp_product_details # inmersión-vista_1438138820146 La solución de Gumbo parecía estar trabajando para todas mis direcciones URL –