从 URL、RE、python 中提取 Amzon ASIN
Posted
技术标签:
【中文标题】从 URL、RE、python 中提取 Amzon ASIN【英文标题】:Extract Amzon ASIN from URL, RE, python 【发布时间】:2020-05-08 11:10:55 【问题描述】:我有一个包含指向亚马逊产品链接的大量 url 列表,这些 url 中包含我需要的信息,称为 ASIN 号。
我知道提取该信息的最佳方法之一是通过正则表达式,我在网址中发现了一种可以提供帮助的模式
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- B07P4LVZNL,位于:dp/B07P4LVZNL/ref=sr_1_f
2- B07DXPN7TK,位于:dp/B07DXPN7TK/ref=sr_1_fkmr2_
3- B07R23QGH6,位于:gp/B07R23QGH6/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>
感谢您的帮助
【问题讨论】:
如果你使用你提供的代码,will be no matches 也许您只需要re.findall(r'/[dg]p/([^/]+)', text)
?
【参考方案1】:
我建议使用
/[dg]p/([^/]+)
它匹配/dp/
或/gp/
,然后将/
以外的任何一个或多个字符捕获到第1 组。
请参阅regex demo。在Python:
asin = re.search(r'/[dg]p/([^/]+)', href, flags=re.IGNORECASE)
if asin:
print(asin.group(1))
【讨论】:
这个很不错!为我工作。我只是改变了一点细节来恢复它:asin = re.search(r'/[dg]p/([^/]+)', href, flags=re.IGNORECASE).group(1)
以上是关于从 URL、RE、python 中提取 Amzon ASIN的主要内容,如果未能解决你的问题,请参考以下文章