Python—爬取图库(一)

爬取图库(一)

1. 选取网站,构造思路:

	*a*.选取网址url:http://desk.zol.com.cn/dongman/haizeiwang/ 
	![在这里插入图片描述](https://img-blog.csdnimg.cn/2019030312214851.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMzQwMTcw,size_16,color_FFFFFF,t_70)		
	*b*.分析布局,外循环获取每块图片合集的外连接。
	![在这里插入图片描述](https://img-blog.csdnimg.cn/20190303122201977.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMzQwMTcw,size_16,color_FFFFFF,t_70)
	*c*.内循环获取每张图片src,接着urlretrieve下载图片。
	![在这里插入图片描述](https://img-blog.csdnimg.cn/20190303122218826.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxMzQwMTcw,size_16,color_FFFFFF,t_70)

2.上代码:

from bs4 import BeautifulSoup as bs#引入BeautifulSoup

from urllib import request#引入request

from urllib.request import urlretrieve#引入解压图片urlretrieve

f=open('G:\爬虫训练\图片\.jpg','wb')#输出流,wb只写

url='http://desk.zol.com.cn/dongman/haizeiwang/'

response=request.urlopen(url)#建立连接

first_html_data=response.read()#读取网页

soup=bs(first_html_data,'html.parser')#转码,html.parser不引入可能导致程序不成功,它的功能是获取全部HTML防止简略。

soup_text=soup.find('ul',class_='pic-list2 clearfix')#寻找相应标签位置

i=0#i做记下图片标签作用

for pra in soup_text.children:#.children是个列表形式
    
    if(pra.name=='li'):#寻找标签'li'
        
        URL='http://desk.zol.com.cn'+pra.a.get('href')#发现标签缺少部分信息
                
        second_response=request.urlopen(URL)#建立次页面链接
        
        second_html_data=second_response.read()#读取
        
        second_soup=bs(second_html_data,'html.parser')#转码
             
        second_soup_text=second_soup.find('ul',id='showImg')#开始找图
        
        for pra2 in second_soup_text.children:#图的链接在ul.children列表里的a.img中
            
            if(pra2 !='\n'):#防止HTML空行报错
                
                if(pra2.a.img.get('src')!=None):#发现链接不止在src中,还有在srcs中
                    
                    img_url=(pra2.a.img.get('src'))#获取src
                else:
                    img_url=(pra2.a.img.get('srcs'))#获取srcs
                    
                urlretrieve(img_url, 'G:\爬虫训练\图片\%04d.jpg'%i)#图片链接下载
                
                i=i+1#叠加
                
                print("正在下载第%04d张图片"%i)#格式化代替图片名输出

3. 结果分析及进步方向:
a.结果如下
在这里插入图片描述b.进步方向:图片获取的是小图,而且数量不多只有180余张。卡在了html.parser很久,毕竟小白不是懂太多,希望以后越来越熟练吧! 以后还可以稍微调用函数减少代码数量。

猜你喜欢

转载自blog.csdn.net/qq_41340170/article/details/88086787
今日推荐