美高梅集团4688python爬虫获取京东手机图片的图文教程

如题,首先当然是要开垦京东的手提式有线电话机页面

美高梅集团4688 1

美高梅集团4688 2

因为要获得差异页面包车型客车富有手提式有线电话机图片,所以大家要跳转到差异页面观察页面地址的规律,这里调查第三页页面

美高梅集团4688 3

由观望能够取得,第3页的链接地址很有望是

那正是说对应第n页的地址正是

大家就能够使用这些原理在编制程序的时候展开自个儿想要获取的页面了

随即大家查阅页面包车型大巴源代码,观望图片链接的原理

美高梅集团4688 4

美高梅集团4688 5

咱俩利用在源代码的页面使用ctrl+f查找,然后在查找框里面输入页面第三台手提式有线电话机的名字
“vivo X9s 全网通 4GB+64GB 玫瑰金
移动”
急忙坚固到图片链接周围的代码,便于前面编制程序对图纸范围拓展筛选

美高梅集团4688 6

能够看到,上海体育场合的画红线的多少个部分,<div id=”plist”
在那一页中是独步一时出现的3个要素,而且离图片链接相比近,所以能够看作筛选页面包车型地铁启幕地方

<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成分,而此外一个图片链接含有n九成分,那样子我们的正则表明式就足以代表为pat2= ‘//.+?/n7/.+?\.jpg’

随后大家要找到那么些页面最终一张手提式有线电话机图片的职分,方便找寻能够视作筛选页面包车型客车收尾地点,方法和方面类似,在源代码找寻框输入
黑莓(MI) 华为Note肆X 手提式无线电话机 香槟金 全网通 三GB+3二GB
定位到页面最终一张图纸地点

美高梅集团4688 7

能够观望,上边<div class=”page
clearfix”>在该页面中是独占鳌头的,而且比较周边尾声一张手提式有线电话机图片相近的链接,所以可以看成筛选结尾地方的成分,其实筛选的因素只要满意唯一同一时间临近我们要获得的目的,那么也足以用作我们要采纳的成分

经过地点准备之后,咱们得出了大约的思绪

一率先实行第二次筛选,使用正则表明式pat壹 = ‘<div id=”plist”.+<div
class=”page clearfix”>’将图片链接的范围差十分的少筛选出来

贰然后进展第贰次筛选,使用正则表达式pat二 =
‘//.+?/n7/.+?\.jpg’将手提式有线电话机图片链接筛选出来

叁利用urllib.urlretrieve保存链接图片到本地

下边给出python代码

# -*- coding: UTF-8 -*- 
import re 
import urllib2 
import urllib 

def 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=1 

 for imageurl in imagelist: 
 imagename = "C:/Users/Administrator/Desktop/jdphone_img/" + str(page) + str(x) + ".jpg" 
 imageurl = "http:" + imageurl 
 try: 
  #保存图片 
  urllib.urlretrieve(imageurl, filename=imagename) 
 except urllib2.URLError as e: 
  #hasattr判断对象里面是否有name属性 
  if hasattr(e, "code"): 
  x+=1 
  if hasattr(e, "reason"): 
  x+=1 
 x+=1 

for i in range(1, 3): 
 url = "https://list.jd.com/list.html?cat=9987,653,655&page=" + str(i) 
 craw(url, i) 

注意:自己这里只保留了第叁二页的无绳电话机图片,在实行第壹遍筛选的时候正则表明式之所以会加了1个”?”进行非贪婪相配,也正是贰回只筛选出一张手提式有线话机图片链接,假若不加这几个非贪婪相配那么大家会把第二个包罗“//”到最终1个聊到底含有.jpg之间的装有内容都会筛选出来,突显是不相符的,在那边提议能够把正则表明式的?去掉,然后看一下出口结果,去体会一下非贪婪相称是如何的。

你大概感兴趣的篇章:

  • python爬虫实战之爬取京东商场实例教程
  • python制作爬虫爬取京东商品切磋教程
  • python爬虫框架scrapy实战之爬取京东市四晋级篇
  • python利用urllib完结爬取京东网址商品图片的爬虫实例
  • Python爬虫达成爬取京东手提式有线电话机页面的图纸(实例代码)
  • Python
    三实战爬虫之爬取京东图书的图片详解
  • Python爬虫达成网页消息抓取功效示例【U牧马人L与正则模块】
  • Python爬虫框架Scrapy实战之批量抓取招聘消息
  • python抓取网页图片示例(python爬虫)
  • 回顾的抓取Taobao图片的Python爬虫
  • 编纂Python爬虫抓取暴走漫画上gif图片的实例分享
  • Python爬虫实现抓取京东商号音讯及下载图片功用示例

相关文章