我会从亚马逊页面抓取所有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个结果
答案 0 :(得分:1)
RegEx的问题在于dp[A]
中的infinity
部分意味着它可以匹配/.*/
和/.*/dp/(.*?)\"
之间的任何符号集。就您而言,它与响应消息中的大多数符号匹配。
请尝试以下RegEx:/
,请参见下面的代码。它从每个页面获取50个ASIN:
/