- 如何爬取电商平台的商品图片
目标:到网站 https://www.jd.com,使用:电动剃须刀 为关键词,准备采集搜索出来的商品主图并下载。
链接如下:
https://search.jd.com/Search?keyword=%E7%94%B5%E5%8A%A8%E5%89%83%E9%A1%BB%E5%88%80&enc=utf-8&suggest=4.def.0.SAK7|MIXTAG_SAK7R,SAK7_M_AM_L5384,SAK7_M_COL_U17678,SAK7_S_AM_R,SAK7_SC_PD_R,SAK7_SM_PB_L16675,SAK7_SS_PM_LC|&wq=%E7%94%B5%E5%8A%A8&pvid=bb682c18bcb7479c9b220aab0f42d0a6
按下F12键(打开开发者工具),在“元素”选项页中,单击“元素检查工具” 或者查看源代码,后再单击你要选的图片,可以找到图片地址:
复制出来就是:
//img13.360buyimg.com/n7/jfs/t1/88836/2/24471/163175/622eefb5E1e47b683/c2bf1d990c407594.jpg,没有http:头需要我们在请求时加上。
然后我们就可以写代码来下载了。
然后我们再写一个下载函数
# 调用函数
运行一下:
然后我们再到文件夹下查看:
可以看到图片下载成功了。
那么下一步我们的目标就是批量获取,批量获取需要取得这个页面所有的图片链接,我们可以用的工具有很多:比如:xpath定位元素、正则工具所有的目标元素等。
这里我们使用xpath 定位:
引用etree 库: from lxml import etree,然后通过页面分析,找出所有商品图片的xpath路径。
然后我们来写一下代码:
写好以后,我们运行一下,可以看到文件都下载成功了。
然后我们再看一下文件夹,可以看到下载的文件都在了:
这样一页所有的商品图片就下载好了。
如果需要下载多页的呢,只要我们再加页数循环,访问多个页面,进行下载就可以了。
https://search.jd.com/Search?keyword=%E7%94%B5%E5%8A%A8%E5%89%83%E9%A1%BB%E5%88%80&qrst=1&suggest=4.def.0.SAK7%7CMIXTAG_SAK7R%2CSAK7_M_AM_L5384%2CSAK7_M_COL_U17678%2CSAK7_S_AM_R%2CSAK7_SC_PD_R%2CSAK7_SM_PB_L16675%2CSAK7_SS_PM_LC%7C&wq=%E7%94%B5%E5%8A%A8%E5%89%83%E9%A1%BB%E5%88%80&stock=1&pvid=bb682c18bcb7479c9b220aab0f42d0a6&page=3&s=56&click=0
这是多页的网址,我们观察一下,发现有page=3这样的参数,这个就是翻页的参数了,那么我们只要把前面的网址再加上这个参数就可以循环访问多页了。
那么我们把上面的代码再改一下,比如我们需要下载20页,
这样,就可以了。然后我们调用函数进行循环访问并下载。
最后 获取到所有目标页的商品图片。
The End
微信扫描下方的二维码阅读本文