The*_*Dan 2 python regex url web-scraping
我有一个巨大的网址列表,其中包含亚马逊产品的链接,该网址包含我需要的信息,称为 ASIN 编号。
我知道提取该信息的最佳方法之一是通过正则表达式,我在网址中发现了一种可以提供帮助的模式
各自的 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)
Run Code Online (Sandbox Code Playgroud)
href 是我存储网址的变量
但是好吧......它的效果不太好,这是我得到的结果类型:
<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>
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助
我建议使用
/[dg]p/([^/]+)
Run Code Online (Sandbox Code Playgroud)
它匹配/dp/或/gp/,然后将除 之外的任何一个或多个字符捕获到组 1 中/。
asin = re.search(r'/[dg]p/([^/]+)', href, flags=re.IGNORECASE)
if asin:
print(asin.group(1))
Run Code Online (Sandbox Code Playgroud)