前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python之京东商品图片爬虫

Python之京东商品图片爬虫

作者头像
用户6825444
发布2019-12-18 11:24:22
1.7K0
发布2019-12-18 11:24:22
举报
文章被收录于专栏:木下学Python木下学Python

导语

京东是我们购物经常去光顾的一个点上平台,它里面的商品多种多样,其中的商品图片也是应有尽有,今天小编呢就给大家带来一个京东商品图片的简单爬虫。

让我们我们愉快地开始吧~

相关文件

关注微信公众号“爬虫康康”,在公众号内回复“京东商品图”获取。

开发工具及

环境搭建

Python版本:3.6.4

开发环境:pycharm 64位

浏览器:Chrome

相关模块:requests

urllib.request

lxml

os

bs4

安装:pip 安装即可

原理简介

爬取 url 地址:www.jd.com 如下图

现在我们假设要爬取手机的图片,我们在搜索框内输入手机,点击搜索后的页面如下图

此时的 url 如下图所示

可见其中有 ‘keyword=手机‘ 以及 ‘wq=手机’关键字,说明请求使用的是 get 方法现在我们修改 url,去掉一些字段后如下图所示

页面可以正常显示

我们来点击第二页,可以看到 url 多了一个‘page=3’的字段,点击第三页,其中的数字变成了5,由此说明它的 url 每一页的字段为单数,我们在删减 url 可正常显示,如下图

所以说,我们可以通过改变关键字,来确定想爬取的商品图片。

确定了 url 后,我们来构造 url 列表,小编我只爬取了了前10页,有600张图,你也可以自定义,但太多的话会受到京东的反爬。

代码如下,先输入一个 commodity 来得到想要爬取的商品名的关键字;然后用列表解析构造前10页的 urls。

我们先定义一个图片下路径供后面使用

构造请求头,在浏览器中按下 F12 打开开发者工具,点击‘Network’,下面会出现一堆文件,点击第一个文件,右面会出现一些信息,选中‘Headers’找到其中的‘user-agent’,这就是请求头,模拟浏览器访问的参数

模块导入,如下图

那现在我们可以来写爬取的函数了,如下图

现在来解释一下。

传进去的是每一页的 url 和计数器 count,用来记数爬到了第几张图片

第一二行,请求 url,并用 bs4 库中的 BeautifulSoup() 类来获得 HTML 源码并用 ‘lxml’ 解析

第三行用 select 选择器获得所有图片在 HTML 源码中的位置组成一个列表,在图片那里右键‘检查元素‘,在右边会弹出高亮代码,在那里在右键‘Copy’-‘select’,就的到了 select 选择器路径

!!注意,下面是一个有点坑的问题!!

获得图片的 HTML 源码所在的后,就要下载了,可我运行调式,发现获得的图片 url 的属性与源码中显示的属性不一样,导致没有结果

在源码中的显示的属性,如下

图片对应的 url 的为属性为‘src’,经过断点调试发现,爬下来的真实属性为‘source-data-lazy-img’,如下图

!!!要用此属性才能获取图片的 url 去下载!!!

现在开始下载,首先用了,一个异常捕获,防止在下载中有图片不能下载而导致程序停止

用循环提取列表中的每一个图片的 url ,给图片命名

用 urllib.request.urlretrieve(img_url,filename= img_name) 下载,第一个参数是图片的 url,第二个是图片的下载路径的名字

最后返回计数器

爬取下载的函数就完成了

再来定义一个,创建下载路径的文件夹的函数,这里就不多解释,如下图

最后主函数,如下

其中要想调用创建文件夹的函数,创建保存的文件,在开始循环,但在调用爬取函数之前,要先把 url 的编码格式转换一下,否则会有问题

运行样例

点击边框调出视频工具条

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-11-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 木下学Python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CLI 工具
云开发 CLI 工具(Cloudbase CLI Devtools,CCLID)是云开发官方指定的 CLI 工具,可以帮助开发者快速构建 Serverless 应用。CLI 工具提供能力包括文件储存的管理、云函数的部署、模板项目的创建、HTTP Service、静态网站托管等,您可以专注于编码,无需在平台中切换各类配置。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档