1 import urllib.request 2 import re 3 import urllib.error 4 5 for i in range(0, 2): 6 pageurl = "http://www.58pic.com/piccate/3-152-632-" + str(i) + ".html" 7 data = urllib.request.urlopen(pageurl).read().decode("utf8", "ignore") 8 pat1 = ‘class="thumb-box".*?src="(.*?).jpg!‘ 9 pat2 = ‘data-original="(.*?).jpg!‘ 10 imglist1 = re.compile(pat1).findall(data) 11 imglist2 = re.compile(pat2).findall(data) 12 13 for j in range(len(imglist2)): 14 print(imglist1[j] + ".jpg!qtwebp290 ") 15 try: 16 file="/home/liuqianli/Documents/s2/"+str(i)+str(j)+".jpg" 17 urllib.request.urlretrieve(imglist2[j]+".jpg",filename=file) 18 print("第"+str(i)+"页第"+str(j)+"图片成功") 19 except urllib.error.URLError as e: 20 if hasattr(e,"code"): 21 print(e.code) 22 if hasattr(e, "reason"): 23 print(e.reason) 24 except Exception as e : 25 print(e)
其实网络爬虫就这么几个套路,所以一定要慢慢学,学一点总结一点,不能图快,
第6页分析源网址,就是主URL,通过这个URL经过浏览器打开,
本题的难点是re的书写, 里面的图片在两个地方都有
1,"class="thumb-box" target="_blank"><img src="http://pic.qiantucdn.com/58pic/17/03/21/57d58PICipF.jpg!qtwebp290" alt="爆款男鞋详情页下载"
2,"class="thumb-box" target="_blank"><img class="lazyload" data-original="http://pic.qiantucdn.com/58pic/27/96/07/96s58PICHvh.jpg!qtwebp290" src="
对于第一个 用pat1 这个正刚表达式,对于第二个,只能用pat2这个正刚,
如果只用第一个的话就会每四个出匹配第二个情况,这种情况也可以处理,但是总理来说用第二个正刚表达式会更好一点,得到的图片也会多一点,
对于第14行,如果只加.jpg的话是不对下载图片的,因为网页源码中就是包括后面部分,所以要加上