第一次写博客,经验不足。
很早以前就听说过爬虫,但是从未自己去实现过,昨天看到一个爬虫的教学视频,不免心里痒痒,于是自己动手编程实现。在这里我选择的是Python语言(不要问我为什么,实际上我也没有学过Python,就当是练练手了)。但是在实现的过程中发现Python真的是简洁精炼,真正的体验到了“人生苦短,我用Python”这句话。
上正文,本次实践是爬取模特秀网站上的图片下载到本地(教学视频中是对mm.taobao.com网站进行爬取的,但是我搜索这个网址时发现它已经被改成了“阿里V任务”了)。整个爬取的过程思路是:
1.首先对网站进行分析,找到每个模特主页的网址特点。
2.urlopen打开每个模特主页,然后read到一个对象中去,再对主页中的图片网址分析特点(在这里也可以分析每个模特的详细情况,比如年龄,籍贯等具体信息都下载到本地)在这里我发现模特照片的前缀都会出现/images/photos,后缀无需多言是.jpg。
3.接下来将所有找到的url保存在一个列表photo中(这个网站读取到的图片会有重复的现象,我把它保存在列表中以便于消除重复),消除重复后用urlretrieve函数将photo中的每个元素对应的图片都下载下来。
# -*- coding:utf-8 -*-
import urllib.request
i=22300
photo=[]
while i<22310 :
print('---------------------------')
url="http://www.motexiu.cn/"+str(i)+"/album"
up=urllib.request.urlopen(url)
cont=str(up.read())
j=cont.find("albumList")
print(cont[j+10:j+13])
url2="http://www.motexiu.cn/"+str(i)+"/albumList/"+str(cont[j+10:j+13])
up2=urllib.request.urlopen(url2)
cont2=str(up2.read())
k=0
m=0
while k<len(cont2):
head=cont2.find("/images/photos/",k)
if cont2[head+14:head+18]=='/dtt':
k=head+10
continue
tail=cont2.find(".jpg",head)
if head==-1:
break
url3="http://www.motexiu.cn"+cont2[head:tail+4]
if url3.find('.png')>0:
k=head+10
continue
photo.insert(m,url3)
k=tail+5
print('----------------------------')
i+=1
photo=list(set(photo))
n=0
print('start download')
while n<len(photo):
urllib.request.urlretrieve(photo[n],'photo/photo'+str(n+1)+'.jpg')
n+=1
Last Updata : 2018-06-28