文档章节

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

单蛙
 单蛙
发布于 2016/08/09 14:58
字数 366
阅读 46
收藏 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()

     

 

        

© 著作权归作者所有

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

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

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

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

诸葛青云999
08/18
0
0
手把手教你写网络爬虫(2):迷你爬虫架构

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

拓海
04/27
0
0
一个月入门Python爬虫,快速获取大规模数据

数据是创造和决策的原材料,高质量的数据都价值不菲。而利用爬虫,我们可以获取大量的价值数据,经分析可以发挥巨大的价值,比如: 豆瓣、知乎:爬取优质答案,筛选出各话题下热门内容,探索...

Python开发者
04/25
0
0
Python 数据挖掘学习 一 结巴分词

近期,想对古典小说进行索引,和知识挖掘,所以研究了下python数据挖掘方面的知识 Python安装 python学习 一 python语法,及变量类型 python学习 二 爬一个图片网站上 python学习 二 02 爬一...

shuilan0066
01/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

并发编程—Java多线程总结

目录 先了解几个概念 多线程:进程和线程是一对多的关系,一个进程(一个程序),由不同的线程来运行。有共享的空间也有独立的空间。 并行: 同时进行,拿两个cpu来跑同样的程序同样的代码片段...

Java干货分享
24分钟前
10
0
Windows Update真的需要向Linux学习

| 虽然简单地将驱动程序从典型的Windows更新中分离出来可能是一种防止这种情况发生的方法,但是Linux甚至更进一步,让用户能够更好地控制他们可以安装的驱动程序。像Ubuntu和Linux Mint这样的...

Linux就该这么学
25分钟前
1
0
Linux学习-0926

4.5/4.6 磁盘格式化 4.7/4.8 磁盘挂载 4.9 手动增加swap分区 一、磁盘格式化 磁盘进行分区后如果不进行格式化,是无法使用的。 linux系统的文件类型: 可以使用使用以下方式进行查看linux系统...

wxy丶
26分钟前
1
0
elasticsearch安装

elasticsearch安装 一、下载: wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.1.tar.gz 二、解压: tar zxvf elasticsearch-5.6.1.tar.gz 三、改名: ......

小杰java
28分钟前
1
0
Vue router传参 四

传递的方法 //传递<router-link :to="{path:'',query:{id:123}}">产品</router-link>//获取this.$route.query.id 这里可以传params 相当于POST 但 :to里面只能是name query 相当......

大灰狼wow
38分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部