我需要刮的主要图像从亚马逊的产品页面。我把ASIN存储到一个列表中,我用循环构建每一个产品页面。我试图刮的图像,但我不能。我尝试用这个代码:
#declare a session object
session = HTMLSession()
#ignore warnings
if not sys.warnoptions:
warnings.simplefilter("ignore")
urls = ['https://www.amazon.it/gp/bestsellers/apparel/', 'https://www.amazon.it/gp/bestsellers/electronics/', 'https://www.amazon.it/gp/bestsellers/books/']
asins = []
for url in urls:
content = requests.get(url).content
decoded_content = content.decode()
asins = re.findall(r'/[^/]+/dp/([^\"?]+)', decoded_content)
#The ASIN Number will be between the dp/ and another /
for asin in asins:
site = 'https://www.amazon.it/'
start = 'dp/'
end = '/'
url = site + start + asin + end
resp1 = requests.get(url).content
soup = bsoup(resp1, "html.parser")
body = soup.find("body")
imgtag = soup.find("img", {"id":"landingImage"})
imageurl = dict(imgtag.attrs)["src"]
resp2 = request.urlopen(imaegurl)
3条答案
按热度按时间pu82cl6c1#
问题是图像是动态加载的;检查页面,并感谢 BeautifulSoupdocumentation,我能够刮所有需要的图像,给定一个产品。
获取给定链接的页面
我有一个存储数据的类,所以我将页面信息保存在示例中...
抓取图像
下面的简单方法将返回第一个最小的图像
因此,您可以根据需要应用这些方法,我认为这就是您改进代码所需的全部内容。
klh5stk12#
查看页面上“所有"img的代码示例
2j4z5cfb3#
正确的方法是通过Amazon Affiliate API帐户,但如果你没有帐户的话。下面是使用ScraperAPI
lxml
的最新代码cssselect
和PIL
关键部分是
dom.cssselect
从页面上的元素中获取图像,一个请求代理和使用PIL正确保存图像。在书籍上测试,其他页面将使用更高级别的元素https://gist.github.com/fmalina/03c84100e84ecc2ae2cd23d60e11959e