Python数据爬虫学习笔记(11)爬取千图网图片数据

  需求:在千图网http://www.58pic.com中的某一板块中,将一定页数的高清图片素材爬取到一个指定的文件夹中。

  分析:以数码电器板块为例

  1.查看该板块的每一页的URL:

注意到第一页是“0-1.html”,第二页是“0-2.html”,由此可找到规律。

2.查看缩略图片的URL,使用F12开发者工具,通过element选项卡中的工具对网页div进行不断展开,找到图片真正的地址:

例如:

3.查看高清图的URL:进入图片详情界面,直接右键点击图片查看图片地址,如:

为:

比较缩略图与高清图的URL对应关系,即可得出结论,高清图URL=至“.jpg!”的缩略图URL+“一陀代码”

4.编写代码:

import urllib.request
import re
import urllib.error
for i in range(1,10):
    pageurl="http://www.58pic.com/piccate/3-151-615-default-0_2_0_0_default_0-"+str(i)+".html"
    data=urllib.request.urlopen(pageurl).read().decode("utf-8","ignore")
    pat='</div></div><img  src="(.*?)qt'
    imglist=re.compile(pat).findall(data)
    for j in range(0,len(imglist)):
        try:
            thisimg=imglist[j]+"/fw/1024/watermark/url/L2ltYWdlcy93YXRlcm1hcmsvZGF0dS5wbmc=/repeat/true/crop/0x1024a0a0"
            #被网站强行裁剪的一小部分
            #thisimg=imglist[j]+"/fw/1024/watermark/url/L2ltYWdlcy93YXRlcm1hcmsvZGF0dS5wbmc=/repeat/true/crop/0x1024a0a1024"
            file="F:/result/"+str(i)+str(j)+".jpg"
            urllib.request.urlretrieve(thisimg,filename=file)
            print("第"+str(i)+"页第"+str(j)+"个图片爬取成功")
        except urllib.error.URLError as e:
            if hasattr(e,"code"):
                print(e.code)
            if hasattr(e,"reason"):
                print(e.reason)
        except Exception as e:
            print(e)

遇到的问题:

1)千图网需登录才能看到高清大图的URL。

2)千图网为对高清大图进行了裁剪,可能分为了多个小部分图片。

3)查看网页源代码的缩略图URL与Python爬取的URL可能会不一致,具体原因可能是因为登录导致的。

结果:

感谢韦玮老师的指导

猜你喜欢

转载自blog.csdn.net/Smart3S/article/details/82764447