如图,通过network查看加载图片,要一张一张右键保存很麻烦,有没有办法写个爬虫批量抓取这里的图片》?
可以的,
爬虫五个部分:
调度程序
url去重
下载器
网页解析
数据存储
对于下载图片的思路是:
获取图片所在网页内容,解析img标签,得到图片地址,然后便利图片网址,下载每张图片,将下载过的图片地址保存在布隆过滤器中,避免重复下载,每次下载一张图片时,通过网址检查是否下载过,当图片下载到本地后,可以将图片路径保存在数据库中,图片文件保存在文件夹中,或者直接将图片保存在数据库中。
python使用request+beautifulsoup4
java使用jsoup
这个也有点简单了吧,之前观点网爬知乎的代码,直接给你上了:
def download_img(url,classify):
try:
extention=get_extension(url)
if(extention is None):
return None
req = urllib2.Request(url)
resp = urllib2.urlopen(req,None,3)
dataimg=resp.read()
name=str(uuid.uuid1()).replace("-","")+"_www.guandn.com"+extention
top="E://topic_pic"
folder=makeDateFolder(top, classify)
filename=None
if folder is not None:
filename =folder+"//"+name
try:
if "e82bab09c_m" in str(url):
return True
if not os.path.exists(filename):
file_object = open(filename,'w+b')
file_object.write(dataimg)
file_object.close()
return '/room/default/'+GetDateString()+'/'+str(classify)+"/"+name
else:
print "file exist"
return None
except IOError,e1:
print "e1=",e1
pass
except Exception as e:
print "eee",e
pass
return None #如果没有下载下来就利用原来网站的链接
3 回答3.1k 阅读✓ 已解决
2 回答1.9k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
2 回答1.8k 阅读✓ 已解决
4 回答1.9k 阅读
3 回答1.7k 阅读
1 回答1.4k 阅读✓ 已解决
这个需求, 如果你会爬虫其实很简单, 不外乎几个步骤:
首页或者有图片的页面, 通过正则或者其他框架, 获取图片的
url
通过
requests
库或者urllib
库, 访问上面图片url的地址以二进制的形式, 写入本地硬盘
参考代码:
更多详情, 可以参考学习
requests
官方文档: requests文档