• python爬取网页图片(二)


    从一个网页爬取图片已经解决,现在想要把这个用户发的图片全部爬取。

    首先:先找到这个用户的发帖页面:

    http://www.acfun.cn/u/1094623.aspx#page=1

    然后从这个页面中爬取每个帖子页面的链接

    然后重复(一)的过程

    源码:

    from urllib.request import urlopen
    from urllib.request import urlretrieve
    from bs4 import BeautifulSoup as da
    import re
    import os
    import shutil
    name=0
    print('这是一个爬虫程序,爬取的是壁纸,下载地址是:d:/tupianpachongtest')
    print('下载图片很多,若要中断:Ctrl+C-----------wanglei')
    try:
         os.mkdir(r'd:/tupianpachongtest')#初始化文件夹
    except FileExistsError as e:
         shutil.rmtree('d:/tupianpachongtest')
         os.mkdir(r'd:/tupianpachongtest')
    def get_urllist():#获取每期的网址
         url0='http://www.acfun.cn'
         urllist=[]
         page=1
         while page <=11:
              url="http://www.acfun.cn/u/1094623.aspx#page="+str(page)
              html= urlopen(url)
              bs0bj=da(html,"lxml")
              imglist = bs0bj.findAll("a",{"href":re.compile("/a/ac")})
         #imgdict=dict(imglist.attrs)
         #imgt=imgdict['herf']
         #print(type(imglist))
              for img in imglist:
                   imgdict=dict(img.attrs)
                   imgt=imgdict['href']
                   urllist.append(url0+imgt)
              page +=1
         return(urllist)#图片网址列表
    urllist=get_urllist()
    ulist=[]
    def getlink(url):#获取图片链接
        html= urlopen(url)
        bs0bj=da(html,"lxml")
        imglist = bs0bj.findAll("img",{"src":re.compile("http://imgs.*?live.*?jpg")})            
        for img in imglist:
            imgdict=dict(img.attrs)
            imgt=imgdict['src']
            ulist.append(imgt)
        return(ulist)
    s=1
    print('爬取进度:0%')
    for url0 in urllist:#对每个网址提取图片链接
         imgurllist=getlink(url0)
         b=len(imgurllist)
         #os.mkdir(r'd:/tupianpachongtest/%s'%s)
         for url in imgurllist:#下载每个链接并保存
              #urlretrieve(url,'d:\tupianpachongtest\%s\%s.jpg'%(s,name))
              urlretrieve(url,'d:\tupianpachongtest\%s.jpg'%name)
              name+=1
              #print(int((name/len(imgurllist))*100),'%')
         print('爬取进度:',end='')     
         print(int((s/len(urllist))*100),'%')
         s=s+1
  • 相关阅读:
    python学习笔记-4-列表和元组
    迭代器 生成器, 可迭代对象以及应用场景
    mysql的创创建用户阶段 开启客户端登录和授权阶段
    初识mysql数据库
    拆目录
    日志编码
    数据库mysql的安装.启动和基础配置------windows版本
    协程
    线程锁 死锁现象 递归锁 信号量 条件定时器 队列 线程池
    网络线程
  • 原文地址:https://www.cnblogs.com/wanglei0103/p/6844242.html
Copyright © 2020-2023  润新知