regex 从URL、RE、python中提取Amzon ASIN

vx6bjr1n  于 12个月前  发布在  Python
关注(0)|答案(2)|浏览(104)

我有一个巨大的链接到亚马逊产品的网址列表,这个网址有一个信息包含在我需要的是所谓的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+T-Shirt+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&keywords=Adidas+M%C3%A8lange+Tech+T-Shirt+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&keywords=Adidas+M%C3%A8lange+Tech+T-Shirt+A372&qid=1579685244&sr=8-2-fkmr2
各自的ASIN编号为:
1-B 07 P4 LVZNL,位于:dp/B 07 P4 LVZNL/ref=sr_1_f之间
2-B 07 DXPN 7 TK,位于:**dp/B 07 DXPN 7 TK/ref=sr_1_fkmr2_**之间
3-B 07 R23 QGH 6,位于:**gp/B 07 R23 QGH 6/ref=sr_1_fkmr2_**之间
我试了这个代码:

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>


谢谢你的帮助

juzqafwq

juzqafwq1#

我建议使用

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

字符串
它匹配/dp//gp/,然后将/以外的任何一个或多个字符捕获到Group 1中。
参见regex demo。在Python中:

asin = re.search(r'/[dg]p/([^/]+)', href, flags=re.IGNORECASE)
if asin:
  print(asin.group(1))

ddrv8njm

ddrv8njm2#

对我很有效-

re.search(r'B0[A-Z0-9]{8}', url)

字符串

相关问题