1.咱们爬取数据时首先本身要明确须要什么,咱们在爬取京东商城的图片是首先要获取url,打开京东网页,点击手机类型,选择所有手机,观察浏览器的地址栏的变化,发现url主要是有:https://list.jd.com/list.html?cat=9987,653,655&page=1,而page就是每页的标志.html
2.点击F12,经过浏览器查看部分源代码,寻找特需规律,咱们发现每一页开始都是从<div id="plist">开始的,以<div class="page clearfix">结束的,接着查看图片的规律,<img width="220" height="220" data-img="1" data-lazy-img="//360.sadsad/dsas544/rffdfsdf55/dsfdsf.jpg">,那咱们就能够根据这个规律来写正则表达式来过滤咱们想要的信息。python
<div id="plist".+?<div class="page clearfix">正则表达式
<img width="220" height="220" data-img="1" data-lazy-img="//(.+?\.jpg)">浏览器
def craw(url, page): # 1.获取网页的数据 html1 = urllib.request.urlopen(url).read() html1 = str(html1) # 2.经过正则获得每页图片的数据 pattrn1 = '<div id="plist".+?<div class="page clearfix">' result1 = re.compile(pattrn1).findall(html1) image = result1[0] # 3.在经过正则拿到每页全部的图片连接 pattrn2 = '<img width="220" height="220" data-img="1" data-lazy-img="//(.+?\.jpg)">' imaglist = re.compile(pattrn2).findall(image) # 4.遍历全部的图片连接,将图片保存在本地,经过页号和序号有序的排列 x = 1 for imageurl in imaglist: imagename = "D:/python/image"+str(page)+str(x)+".jpg" imageurl = "http://"+imageurl try: urllib.request.urlretrieve(imageurl, filename=imagename) except urllib.error.URLError as e: if hasattr(e, "code"): x += 1 if hasattr(e, "reason"): x += 1 x += 1 for i in range(1, 79): url = "https://list.jd.com/list.html?cat=9987,653,655&page="+str(i) craw(url, i)
其实爬虫的关键是在于分析,咱们要根据本身的需求对网页及西宁分析,而后找出规律,写出正确的正则表达式来过滤本身的信息,拿到想要的东西,在就是在请求的过程当中咱们须要注意许多细节。url