如题,首先当然是要打开京东的手机页面

因为要获取不同页面的所有手机图片,所以我们要跳转到不同页面观察页面地址的规律,这里观察第二页页面

由观察可以得到,第二页的链接地址很有可能是

https://list.jd.com/list.html?cat=9987,653,655&page=2

那么对应第n页的地址就是

https://list.jd.com/list.html?cat=9987,653,655&page=n

我们就可以利用这个规律在编程的时候打开自己想要获取的页面了

接着我们查看页面的源代码,观察图片链接的规律

我们使用在源代码的页面使用ctrl+f查找,然后在查找框里面输入页面第一台手机的名字 “vivo X9s 全网通 4GB+64GB 玫瑰金 移动” 快速定位到图片链接附近的代码,便于后面编程对图片范围进行筛选

可以看到,上图的画红线的三个部分,<div id="plist" 在这一页中是唯一出现的一个元素,而且离图片链接比较近,所以可以作为筛选页面的开头位置

<img width=“220”……这个是手机图片的信息,我们要获取的是后面

//img14.360buyimg.com/n7/jfs/t6088/107/5539077608/409616/7f98b2bb/596c2edaN9792cd20.jpg

这个链接,但是观察发现后面也有一个图片链接

img  data-sku="5291744" width="25" height="25" class="loading-style2" src="//img14.360buyimg.com/n9/jfs/t6088/107/5539077608/409616/7f98b2bb/596c2edaN9792cd20.jpg"

这个很明显不是我们要找的手机图片链接

所以我们要使用正则表达式将真正的图片链接筛选出来,观察发现这两个图片链接的区别在于手机图片链接里面含有n7元素,而另外一个图片链接含有n9元素,这样子我们的正则表达式就可以表示为pat2 = '//.+?/n7/.+?\.jpg'

接着我们要找到这个页面最后一张手机图片的位置,方便找出可以作为筛选页面的结束位置,方法和上面类似,在源代码搜索框输入  小米(MI) 红米Note4X 手机 香槟金 全网通 3GB+32GB 定位到页面最后一张图片位置

可以看到,下面<div class="page clearfix">在该页面中是唯一的,而且比较接近最后一张手机图片附近的链接,所以可以作为筛选结尾位置的元素,其实筛选的元素只要满足唯一并且接近我们要获取的目标,那么也可以作为我们要选取的元素

经过上面准备之后,我们得出了大概的思路

1首先进行第一次筛选,使用正则表达式pat1 = '<div id="plist".+<div class="page clearfix">'将图片链接的范围大概筛选出来

2然后进行第二次筛选,使用正则表达式pat2 = '//.+?/n7/.+?\.jpg'将手机图片链接筛选出来

3使用urllib.urlretrieve保存链接图片到本地

下面给出python代码

# -*- coding: UTF-8 -*-
import re
import urllib2
import urllibdef craw(url, page):html1 = urllib2.urlopen(url).read()html1 = str(html1)pat1 = '<div id="plist".+<div class="page clearfix">'result1 = re.compile(pat1, re.DOTALL).findall(html1)#获取第一次筛选结果result1 = result1[0]#*匹配0个或者多个前面表达式#.匹配任意字符,加上re.dotall包括换行符#+匹配1个或者多个前面表达式#?非贪婪匹配,就是只匹配一组#筛选出图片链接列表pat2 = '//.+?/n7/.+?\.jpg'imagelist = re.compile(pat2).findall(result1)#x作为图片文件的顺序x=1for imageurl in imagelist:imagename = "C:/Users/Administrator/Desktop/jdphone_img/" + str(page) + str(x) + ".jpg"imageurl = "http:" + imageurltry:#保存图片urllib.urlretrieve(imageurl, filename=imagename)except urllib2.URLError as e:#hasattr判断对象里面是否有name属性if hasattr(e, "code"):x+=1if hasattr(e, "reason"):x+=1x+=1for i in range(1, 3):url = "https://list.jd.com/list.html?cat=9987,653,655&page=" + str(i)craw(url, i)

注意:我这里只保存了第一二页的手机图片,在进行第二次筛选的时候正则表达式之所以会加了一个"?"进行非贪婪匹配,也就是一次只筛选出一张手机图片链接,如果不加这个非贪婪匹配那么我们会把第一个含有“//”到最后一个结尾含有.jpg之间的所有内容都会筛选出来,显示是不符合的,在这里建议可以把正则表达式的?去掉,然后看一下输出结果,去体会一下非贪婪匹配是怎么样的




python爬虫获取京东手机图片相关推荐

  1. python爬虫怎么下载图片到手机_python爬虫获取京东手机图片的图文教程

    如题,首先当然是要打开京东的手机页面 因为要获取不同页面的所有手机图片,所以我们要跳转到不同页面观察页面地址的规律,这里观察第二页页面 由观察可以得到,第二页的链接地址很有可能是 https://li ...

  2. 手机python教程_python爬虫获取京东手机图片的图文教程

    如题,首先当然是要打开京东的手机页面 因为要获取不同页面的所有手机图片,所以我们要跳转到不同页面观察页面地址的规律,这里观察第二页页面 由观察可以得到,第二页的链接地址很有可能是 https://li ...

  3. Python爬虫获取京东大数据!其实爬虫真的很简单!

    简介 Python是一个简洁的语言,集成性非常高,我们可以使用集成的工具库,本文中用到的库有requests.re 找到我们需要爬取的链接 PS:如有需要Python学习资料的小伙伴可以加点击下方链接 ...

  4. 自学三个月的我,利用Python爬虫获取精美素材图片,看看我是怎么做到的(实战篇)

    一.项目背景 在素材网想找到合适图片需要一页一页往下翻,现在学会python就可以用程序把所有图片保存下来,慢慢挑选合适的图片. 二.项目目标 1.根据给定的网址获取网页源代码. 2.利用正则表达式把 ...

  5. 爬虫实战:爬取京东手机图片并保存到本地

    先看一下效果: 这个爬虫的功能是将京东上的手机图片爬取并保存下来,其思路和我上一篇博客爬取豆瓣大致相同,只是代码实现不太一样.主要分为三步:获取网页信息, 解析数据, 保存数据.只是这一次保存的是图片 ...

  6. python爬取京东手机数据_实例解析Python如何实现爬取京东手机图片

    本文主要为大家分享一篇Python如何实现爬取京东手机图片的方法,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧,希望能帮助到大家. 运行环境Python3.6.4#爬取京东手机图片i ...

  7. Python爬虫获取异步加载站点pexels并下载图片(Python爬虫实战3)

    Python爬虫获取异步加载站点pexels并下载图片(Python爬虫实战3) 1. 异步加载爬虫 对于静态页面爬虫很容易获取到站点的数据内容,然而静态页面需要全量加载站点的所有数据,对于网站的访问 ...

  8. Python爬虫 | Python爬虫获取女友图片

    Python爬虫 | Python爬虫获取女友图片 前言 程序说明 二次元女友获取程序 观察网页结构 页面解析 创建图片保存路径 图片下载 格式转换 爬取结果展示 完整程序 前言 (又到了常见的无中生 ...

  9. Python爬虫获取简书的用户、文章、评论、图片等数据,并存入数据库

    Python爬虫获取简书的用户.文章.评论.图片等数据,并存入数据库 爬虫定义:网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维 ...

最新文章

  1. [20171227]表的FULL_HASH_VALUE值的计算2
  2. python算法预测风险等级_一般算法水平到底什么样子才能秒杀Bat的笔试编程题?...
  3. linux rpm包,安装路径查看及改变rpm包默认安装路径
  4. 【map分组求和】map集合根据某一key分组,再对某一key对应的所有值求和
  5. C#中常用的文件操作方法
  6. 福州大学计算机学院软件实力,福建五大重点大学,哪一所实力最好?
  7. python上机实践_python程序设计江红上机实践答案
  8. 计算机怎么屏幕保护,屏保设置在哪里设置 电脑屏保怎么设置
  9. AutoCad入门(一)
  10. 洛必达法则介绍及使用注意点
  11. 2. shenyu(神禹)网关调用链及组装过程
  12. 【洛谷 4556】雨天的尾巴
  13. C# NPOI 和 CSV 导出Excel 功能实现
  14. TCP/IP网络通信协议
  15. 关于“primordials is not defined”报错的解决办法 - 解决报错篇
  16. Latex参考文献插入
  17. commons-poll、jedis-2.7.0、jedis.properties资源分享
  18. 文件系统源码分析之buffer.c
  19. 如何查看当前Word是即点即用版本还是安装版本
  20. 服务器响应程序,封装高可复用的服务端响应SSC程序修复对象 --ServerResponse

热门文章

  1. 写了个汉字转G代码工具,无描边的那种,市面上没有类似的小软件
  2. iOS-百度语音合成的使用
  3. Windows10用户头像更换失败无法保存解决方案
  4. 使用Excel和Tableau制作动态报表
  5. 在c语言中 反斜杠符是,[转载]C语言中反斜杠的使用
  6. 企业微信机器人脚本python_python提取数据库数据并实现企业微信机器人定时消息推送...
  7. UIKBBlurredKeyView candidateList:unrecognized...BU
  8. vivox80pro和vivox70pro+ 哪个值得入手参数对比
  9. vivooriginos和鸿蒙对比,凸显浓厚节日氛围 vivo OriginOS新春版上线
  10. 冷却水的循环方式有哪几种_循环冷却水系统,按照通风方式可分为 和 两种。...