美文网首页
使用正则编写简单的爬虫爬取某网站的图片

使用正则编写简单的爬虫爬取某网站的图片

作者: ggr | 来源:发表于2018-06-06 11:09 被阅读0次

    思路:简单的爬虫实际上主要是通过查看页面源代码,查看图片标签的表示格式,然后在编写正则进行匹配。

    import urllib.request
    import codecs
    import hashlib
    import time
    import re
    # 使用codecs实现文件自动编码
    def parseHtml(url):
        webPage = urllib.request.urlopen(url)
        data = webPage.read()
        data = data.decode('utf-8')
        reg = r'(?<=href=\").+?(?=\")|(?<=href=\').+?(?=\')' 
        htmlre = re.compile(reg)
        htmllist = re.findall(htmlre, data)
        getImg(data)
        return set(htmllist)
        
    # 获得图片地址
    def getImg(html):
            reg = r'src="(http://*.*?\.jpg)"'        # 定义一个正则来匹配页面当中的图片
            imgre = re.compile(reg)         # 为了让正则更快,给它来个编译
            #这个时候做个测试,把匹配的数据都给打印出来
            imglist = re.findall(imgre, html)                       # 通过正则返回所有数据列表
            # 把这个地址一个一个的拿下来进行下载
            x = 0   
            for imgurl in imglist:
                m=hashlib.md5()
                m.update(url.encode('utf-8'))
                m.update(str(time.time()).encode('utf-8'))
                filename=r'%s.jpg'% m.hexdigest()
                try:
                    urllib.request.urlretrieve(imgurl,'C:/Users/GuiRunning/Desktop/hello/%s' %(filename))
                except BaseException as e:
                    continue
                x+=1
            print('爬虫完成,爬到%s张图片' %(x))
    url='http://www.nipic.com/photo'    
    list=parseHtml(url)
    for item in list:
        print(item)
        if(item.find("http://") == -1):
            item='http://www.nipic.com'+item        
            try:
                parseHtml(item)
            except urllib.error.HTTPError as e:
                continue
    print('爬虫结束')
    

    爬取结果:


    image.png

    相关文章

      网友评论

          本文标题:使用正则编写简单的爬虫爬取某网站的图片

          本文链接:https://www.haomeiwen.com/subject/crqbsftx.html