Извлеките Amzon ASIN из URL, RE, python - PullRequest
1 голос
/ 22 января 2020

У меня есть огромный список URL-адресов со ссылками на продукты Amazon, в этих URL-адресах содержится нужная мне информация, которая называется номером ASIN.

Я понимаю, что это один из лучших способов извлечь эту информацию через Регулярные выражения , я нашел шаблон в URL, который может помочь

1- https://www.amazon.com/adidas-Melange-Performance-T-Shirt-Charcoal/dp/B07P4LVZNL/ref=sr_1_fkmr1_2? dchild = 1 & Keywords = Adidas + M% C3% A8lange + Tech + Футболка + A372 & qid = 1579685244 & sr = 8-2-fkmr1

2- https://www.amazon.com/adidas-Originals-Solid-Melange-Purple/dp/B07DXPN7TK/ref=sr_1_fkmr2_1? Dchild = 1 & ключевые слова = Adidas + M% C3% A8lange + Tech + футболка + A372 & qid = 1579685244 & sr = 8-1-fkmr2

3- https://www.amazon.com/adidas-Game-Mode-Polo-Multi-Sport/gp/B07R23QGH6/ref=sr_1_fkmr2_2? Dchild = 1 & ключевые слова = Adidas + M% C3% A8lange + Tech + футболка + A372 & qid = 1579685244 & sr = 8- 2-fkmr2

Соответствующие номера ASIN:

1- B07P4LVZNL , расположенные между: dp / B07P4LVZNL / ref = sr_1_f

2- B07DXPN7TK , расположенный между: dp / B07DXPN7TK / ref = sr_1_fkmr2_

3- B07R23QGH6 , расположенный между : gp / B07R23QGH6 / ref = sr_1_fkmr2_ * 10 39 *

Я пробовал этот код:

asin = re.match("http[s]?://www.amazon.com(\w+)(.*)/(dp|gp/product)/(?P<asin>\w+).*", href, flags=re.IGNORECASE)

href - это переменная, в которой я хранил URL-адреса

Но хорошо ... Это работает не совсем хорошо Это тип результата, который я получаю:

<re.Match object; span=(0, 175), match='https://www.amazon.com/adidas-Originals-Solid-Mel>
<re.Match object; span=(0, 171), match='https://www.amazon.com/adidas-Game-Mode-Polo-Mult>
<re.Match object; span=(0, 167), match='https://www.amazon.com/adidas-Tech-Tee-Black-X-La>

Спасибо за вашу помощь

1 Ответ

1 голос
/ 22 января 2020

Я предлагаю использовать

/[dg]p/([^/]+)

Это соответствует /dp/ или /gp/ и затем захватывает в группу 1 любой один или несколько символов, отличных от /.

См. regex demo . В Python:

asin = re.search(r'/[dg]p/([^/]+)', href, flags=re.IGNORECASE)
if asin:
  print(asin.group(1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...