文档章节

python脚本多线程爬虫爬电脑壁纸

单蛙
 单蛙
发布于 2016/08/09 14:58
字数 366
阅读 53
收藏 2
  1. 安装python 3.4.2
  2. 安装相关的库:
  3. pip install beautifulsoup4
    
    pip install threadpool
  4. #!/usr/bin/python
    #fileencoding:utf-8
    '''
    EXCEL DATA ANALYSIS
    Created on 2016年08月09日
    '''
    import threadpool
    from bs4 import BeautifulSoup
    import os
    #当前目录
    BASE_DIR = os.path.split(os.path.realpath(__file__))[0]
    #起始和结束页
    begin_page  = 1
    endindex = 5
    #分辨率
    scale = "2560x1600"
    base_page_url = "http://wallpaperswide.com/page/"
    base_url = "http://wallpaperswide.com"
    import urllib.request
    import socket
    #测试进行一页
    def main(page):
        socket.setdefaulttimeout(20)
        #http://wallpaperswide.com/page/2
        response = urllib.request.urlopen(base_page_url+str(page))
        html = response.read().decode('utf-8',"ignore")
        soup = BeautifulSoup(html,"html.parser")
        url_list = []
        for ul in soup.select("ul.wallpapers"):
            for a in ul.select("a"):
                url_list.append(a.get('href'))
        #print (url_list)
        list_target = []
        if url_list:
            for item in url_list:
                response = urllib.request.urlopen(base_url+item)
                html = response.read().decode('utf-8',"ignore")
                soup1 = BeautifulSoup(html,"html.parser")
                for div in soup1.select("div.wallpaper-resolutions"):
                    for target_a in div.select("a"):
                        if target_a.string == scale:
                            list_target.append(base_url+target_a.get('href'))
        for img_url in list_target:
            imgName = img_url[img_url.rindex("/")+1:]
            #targetDir = os.path.join(BASE_DIR,"2560x1600")
            #targetPath = os.path.join(targetDir,imgName)
            #urllib.urlretrieve(dowloadUrl, targetPath)
            header = {
                    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64)\
                  AppleWebKit/537.36 (KHTML, like Gecko)\
                  Chrome/35.0.1916.114 Safari/537.36',
                    'Cookie': 'AspxAutoDetectCookieSupport=1'
                    }
            request = urllib.request.Request(img_url, None, header)
            target_path = os.path.join(BASE_DIR,"2560x1600")
            if not os.path.exists(target_path):
                os.makedirs(target_path)
            targetDir = os.path.join(target_path,imgName)
            response = urllib.request.urlopen(request)
            #print response.headers['Content-Length']
            with open(targetDir,"wb") as f:
                f.write(response.read())
            print ("page %s" % page)
            print ("dowload %s ok" % img_url)
    def print_now(request, n):
        print ('%s - %s' % (request.requestID, n))
    if __name__ == "__main__":
    
        if not type(begin_page) == type(1) or not type(endindex) == type(1) or not begin_page <endindex:
            print("开始和结束页必须为整数,且开始页必须小于结束页")
        else:
            pool = threadpool.ThreadPool(50)
            requests = threadpool.makeRequests(main, range(begin_page,endindex+1), print_now)
            [pool.putRequest(req) for req in requests]
            pool.wait()

     

 

        

© 著作权归作者所有

共有 人打赏支持
单蛙
粉丝 15
博文 47
码字总数 17407
作品 0
海淀
程序员
私信 提问
python爬虫实战,干翻一个网站,爬取资源链接并用多线程下载!

其实说是这样说,不过我觉得如果不是有什么特殊用处就不要去下载了,毕竟一个视频就占那么大的内存,爬好链接地址就可以了。当然如果你是要爬那种网站,那么下载一点点备用我也能够理解。 需...

Python新世界
2018/07/30
0
0
国内顶尖白帽子用Python打造渗透工具集,当时花上万购买都被拒!

前言 python是门简单易学的语言,强大的第三方库让我们在编程中事半功倍,今天我们就来谈谈python在渗透测试中的应用,让我们自己动手打造自己的渗透工具集。 一、信息搜集--py端口扫描小脚本...

诸葛青云999
2018/08/18
0
0
Python多线程爬图&Scrapy框架爬图

一、背景 对于日常Python爬虫由于效率问题,本次测试使用多线程和Scrapy框架来实现抓取斗图来表情。 由于IO操作不使用CPU,对于IO密集(磁盘IO/网络IO/人家交互IO)型适合用多线程,对于计算...

KaliArch
2018/08/21
0
0
手把手教你写网络爬虫(2):迷你爬虫架构

原文出处:拓海 介绍 大家好!回顾上一期,我们在介绍了爬虫的基本概念之后,就利用各种工具横冲直撞的完成了一个小爬虫,目的就是猛、糙、快,方便初学者上手,建立信心。对于有一定基础的读...

拓海
2018/04/27
0
0
如何用Python来制作简单的爬虫,爬取到你想要的图片

在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材。 我们最常规的做法就是通过鼠标右键,选择另存为...

糖宝lsh
2018/08/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

[git/tower]SSL certificate problem: Invalid certificate chain

fatal: unable to access 'https://xxx@130.51.23.250/baseline/mobile-framework/login-service.git/': SSL certificate problem: Invalid certificate chain 解决: git config --global ......

Danni3
43分钟前
1
0
ADI推出AD9528 JESD204B时钟和SYSREF发生器

1:根据ADI官网上对9361的介绍,其中还提到了与9361相配套的电源,时钟,LNA,PA等等功能部分需要的芯片,具体网页:https://www.analog.com/en/products/ad9361.html 2:MATLAB Filter Design...

whoisliang
56分钟前
2
0
Java springcloud B2B2C o2o多用户商城 springcloud架构-docker-feign配置(五)

简介 上一节我们讨论了怎么用feign声明式调用cloud的生产者,这节我们讨论一下feign配置,通过编写配置类,我们可以自定义feign的日志级别,日志扫描目录,可以通过feign调用服务在eureka上的...

sccspuercode
今天
5
0
长连接的心跳及重连设计

前言 说道“心跳”这个词大家都不陌生,当然不是指男女之间的心跳,而是和长连接相关的。 顾名思义就是证明是否还活着的依据。 什么场景下需要心跳呢? 目前我们接触到的大多是一些基于长连接...

crossoverJie
今天
12
0
OSChina 周三乱弹 —— 风扇写着先生请自爱

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @蚂蚁哈哈哈 :分享陈奕迅的单曲《落花流水》 《落花流水》- 陈奕迅 手机党少年们想听歌,请使劲儿戳(这里) @车谷 :我发现每天上班都好困 ...

小小编辑
今天
1K
16

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部