• [python爬虫]简单爬虫功能


    在我们日常上网浏览网页的时候,经常会看到某个网站中一些好看的图片,它们可能存在在很多页面当中,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材。

    我们最常规的做法就是通过鼠标右键,选择另存为。但有些图片鼠标右键的时候并没有另存为选项,还有办法就通过就是通过截图工具截取下来,但这样就降低图片的清晰度。就算可以弄下来,但是我们需要几千个页面当中的图片,如果一个一个下载,你的手将残。好吧~!其实你很厉害的,右键查看页面源代码

    我们可以通过python 来实现这样一个简单的爬虫功能,把我们想要的代码爬取到本地。下面就看看如何使用python来实现这样一个功能。

    一、获取整个页面数据

    def get_content(url):
        """
        获取网页源码
        """
        html = urllib.urlopen(url)
        content = html.read()
        html.close()
        return content

    二、抓取图片文件名

    抓取文件名时,由于特殊符号会影响显示,所以将“ * ”,“ / ”等符号删

    def get_name(name,file):
        """
        抓取图片文件名
        """
        self.picName = name.decode('utf-8')
        if "*" in self.picName:
            self.picName = self.picName.replace("*","")
        elif "/" in self.picName:
            self.picName = self.picName.replace("/","")
        print self.picName
    
    def get_file(info):
        """
        获取img文件
        """
        soup = BeautifulSoup(info,"html.parser")
        # 找到所有免费下载的模块
        all_files = soup.find_all('a',title="免费下载")
        # 找到所有的hi标题
        titles = soup.find_all('h1')
        # 截取需要的标题
        for title in titles:
            name = str(title)[4:-5]
        
        # 获取文件名
        for file in all_files:
                get_name(name,file)

    、下载图片

    下载后缀名是"gif"或者"jpg"的图片,并存放在E:\googleDownLoad\cssmuban目录下

    def pic_category(str_images):
        """
        下载图片
        """
        soup = BeautifulSoup(info,"html.parser")
        all_image = soup.find_all('div',class_="large-Imgs")
        images = str_images
        pat = re.compile(images)
        image_code = re.findall(pat,str(all_image))
        for i in image_code:
            if str(i)[-3:] == 'gif':
                image = urllib.urlretrieve('http://www.cssmoban.com'+str(i), 'E:\googleDownLoad\cssmuban\'+str(self.picName).decode('utf-8')+'.gif')
            else:
                image = urllib.urlretrieve('http://www.cssmoban.com'+str(i), 'E:\googleDownLoad\cssmuban\'+str(self.picName).decode('utf-8')+'.jpg')
            
    
    def pic_download(info):
        """
        下载图片
        """
        pic_category(r'src="(.+?.gif)"')
        pic_category(r'src="(.+?.jpg)"')

     四、遍历所有url,下载每个页面的所需要的图片和文件名

    self.num = 1
    # 下载文件
    for i in range(6000):
        url = 'http://www.cssmoban.com/cssthemes/'+ str(self.num) +'.shtml'
        info = get_content(url)
        get_file(info)
        pic_download(info)
        self.num = self.num + 1

     运行结果如下:

     

     

    本站文章为 宝宝巴士 SD.Team 原创,转载务必在明显处注明:(作者官方网站: 宝宝巴士 
    转载自【宝宝巴士SuperDo团队】 原文链接: http://www.cnblogs.com/superdo/p/4927574.html

     

     

  • 相关阅读:
    前端导出excel文件
    promise和async/await的用法
    vue element 导出 分页数据的excel表格
    mac net.core 安装问题总结
    npm报MSBUILD错误的解决办法
    现大前端开发环境配置
    git 常用命令
    NodeJs (一)
    VUE 组件通信、传值
    vue-cli 第一章
  • 原文地址:https://www.cnblogs.com/superdo/p/4927574.html
Copyright © 2020-2023  润新知