zoukankan      html  css  js  c++  java
  • [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

     

     

  • 相关阅读:
    双主双写、只备份某些表且要在建表ID自增
    我的系统资源呢?php-fpm你知道吗?
    apache常用的两种工作模式 prefork和worker
    Binlog的三种模式
    Tomcat
    JVM初识、调优
    httpclient 3.1跳过https请求SSL的验证
    POM报错Failure to transfer org.apache.maven.plugins:maven-resources-plugin:pom:2.6 from
    eclipse快捷键,移动和复制一段代码
    org.codehaus.jettison.json.JSONObject使用方法
  • 原文地址:https://www.cnblogs.com/superdo/p/4927574.html
Copyright © 2011-2022 走看看