使用 python 从亚马逊页面获取 ASIN 编号

Posted

技术标签:

【中文标题】使用 python 从亚马逊页面获取 ASIN 编号【英文标题】:Scaper of ASIN number from an Amazon page using python 【发布时间】:2019-12-06 05:34:56 【问题描述】:

我会从亚马逊页面上刮掉所有的 asin 号码。 我需要这些列表来对获得的每个 asin 进行刮擦。

我尝试使用此代码,但我只能读取 3 个 asin 编号作为结果。

我想我做错了正则表达式

这是我的代码:

import requests

###Amazon URL
urls = ['https://www.amazon.it/gp/bestsellers/apparel/', 'https://www.amazon.it/gp/bestsellers/electronics/', 'https://www.amazon.it/gp/bestsellers/books/']

htmltexts = []
for url in urls:
    req = requests.get(url).content
    htmltexts.append(req)

import re
for htmltext in htmltexts:
    text = str(htmltext)
    pattern = re.compile(r"/.*/dp/(.*?)\"")
    s = re.findall(pattern, text)
    print (s)

我希望每个页面至少有 20 个结果。该程序已为 3 个亚马逊页面构建。所以我至少需要 60 个结果

【问题讨论】:

【参考方案1】:

RegEx 的问题在于/.*/dp/(.*?)\" 中的/.*/ 部分意味着它可以匹配// 之间的任何符号集。在您的情况下,它匹配响应消息中的大多数符号。

尝试以下正则表达式:/[^/]+/dp/([^"]+),请参见下面的代码。它从每个页面获取 50 个 ASIN:

import requests
import re

urls = [
    'https://www.amazon.it/gp/bestsellers/apparel/',
    'https://www.amazon.it/gp/bestsellers/electronics/',
    'https://www.amazon.it/gp/bestsellers/books/'
]

for url in urls:
    content = requests.get(url).content
    decoded_content = content.decode()

    asins = set(re.findall(r'/[^/]+/dp/([^"?]+)', decoded_content))
    print(asins)

【讨论】:

以上是关于使用 python 从亚马逊页面获取 ASIN 编号的主要内容,如果未能解决你的问题,请参考以下文章

javascript 使用ASIN,从亚马逊产品广告API获取产品详细信息,然后打印价格

如何使用 stringByEvaluatingJavaScriptFromString 在亚马逊上获取 ASIN 代码?

使用 python 3 和 beautifulsoup 从亚马逊抓取图像

使用 ASIN 在亚马逊获取商品/产品价格

从 URL、RE、python 中提取 Amzon ASIN

amazon爬取亚马逊页面信息