使用 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 从亚马逊抓取图像