首页 > 编程语言 > 详细

网络爬虫之网站图片爬取-python实现

时间:2017-01-31 23:31:09      阅读:690      评论:0      收藏:0      [点我收藏+]

今天上午开始学了学爬虫技术。下午开始着手写了第一个网站爬虫脚本。

 

这次我要爬的是随手找的一个主要是妹子图片的网站,目标是把其中一个分类下的所有妹子套图都爬下来(附网址:http://www.dazui88.com/tag/toutiao/list_130_1.html)

老司机们应该知道,一套图一般都有几十张,但这类网站一般一页只会放出一张或者几张,这样一来我们浏览图片时的观感就会大大下降,

因此一次把图片全都爬下来会方便的多。

 

我们最终 所实现的效果如下,其中每一个文件夹里都是一套图片:

技术分享

 

实现时的技术要求与难点:

总的老说目前做的还比较粗糙,但完全够用,主要是拿来练练手。

1.本想以每套图片的名字作为文件夹,但是由于中文有乱码,暂时未实现;

2.下载图片使用的还是requests库,貌似 beautifulsoup库会更好一点,但暂未尝试;

3.由于并没有编写多线程,以及缓冲池之类的,速度会比较慢,但还可以接受;

4.脚本存在一定问题,如果网站其中一张图片丢失,该套图片的剩下部分会被跳过,可解决,但暂未解决;

5.脚本还可以做成软件的形式,但较耗时,有空再说;

6.由于此次爬取的网站其他版块的url结构基本一致,所以花上几秒钟改一下,就能很快爬取其他的图片,甚至整个站所有的图片,但是速度有待改进。

 

代码实现:

#-*- coding:utf-8 -*-
import pprint,re,urllib,pprint,os,requests,chardet

def urllink(link):
    response=requests.get(link)
    return response.text

# def htmltype(html):
#     mychar=chardet.detect(html)
#     bianma=mychar[‘encoding‘]
#     if bianma==‘utf-8‘ or bianma==‘UTF-8‘:
#         return html
#     else:
#         return html.decode(‘gb2312‘,‘ignore‘).encode(‘utf-8‘)

def spider():
    m=1
    for i in range(1,11):
        link1="http://www.dazui88.com/tag/toutiao/list_130_%d.html"%i
        html=urllink(link1)
        # html=htmltype(html)
        plist=re.findall("<p>.*?</p>",html,re.S)
        for j in plist:
            href = ‘http://www.dazui88.com‘ + re.search(‘href="(.*?).html‘, j).group(1)
            #label = (re.findall(‘alt="(.*?)"‘,j,re.S))[0]
            #os.mkdir(os.path.join(r‘D:\pachong\toutiao‘,label))
            if not  os.path.exists(r‘D:\pachong\toutiao\%s‘%str(m)):
                os.mkdir(os.path.join(r‘D:\pachong\toutiao‘,str(m)))
            for k in range(1,100):
                try:
                    hrefnew=href
                    if k is not 1:
                        hrefnew=href+‘_%d‘%k
                    hrefnew+=‘.html‘
                    print(hrefnew)
                    html2=urllink(hrefnew)
                    picurl=re.findall(‘img alt.*?src="(.*?)"‘,html2)[0]
                    print(picurl)
                    retu=requests.get(picurl,stream=True)
                    file=open(r‘D:\pachong\toutiao\%s\%s‘%(str(m),str(k))+‘.jpg‘,‘wb‘)
                    for chunk in retu.iter_content(chunk_size=10000):
                        if chunk:
                            file.write(chunk)
                            file.flush()
                    file.close()
                except:
                    break
            m+=1

if __name__=="__main__":
    spider()

  

网络爬虫之网站图片爬取-python实现

原文:http://www.cnblogs.com/lomooo/p/6359243.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!