文档章节

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

单蛙
 单蛙
发布于 2016/08/09 14:58
字数 366
阅读 48
收藏 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新世界
07/30
0
0
国内顶尖白帽子用Python打造渗透工具集,当时花上万购买都被拒!

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

诸葛青云999
08/18
0
0
如何用Python来制作简单的爬虫,爬取到你想要的图片

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

糖宝lsh
08/28
0
0
手把手教你写网络爬虫(2):迷你爬虫架构

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

拓海
04/27
0
0
Python多线程爬图&Scrapy框架爬图

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

KaliArch
08/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

浅谈“李氏代换”——从纪念金庸和斯坦李说起

李氏代换(LSP)简介 李氏代换是软件设计的一个原则,又名依赖倒转原则或依赖倒置原则,其衍生原则有接口分离原则等。该原则由Barbara Liskov于1988年提出。 该原则指出,程序中高级别的元素...

SamYjy
27分钟前
14
0
JavaScript实现在线websocket WSS测试工具 -toolfk程序员工具网

本文要推荐的[ToolFk]是一款程序员经常使用的线上免费测试工具箱,ToolFk 特色是专注于程序员日常的开发工具,不用安装任何软件,只要把内容贴上按一个执行按钮,就能获取到想要的内容结果。T...

toolfk
46分钟前
1
0
linux-scp 远程拷贝报错原因

刚拿到一台重装后的服务器,远程ssh都正常,但是一scp拷贝东西就报错: 本地确定是有scp命令的,而且如果是本地没有scp不会报后面那句lost connection,因此就是远程没有scp这个命令。因此在...

linuxprobe16
59分钟前
1
0
OSChina 周六乱弹 —— 谁小时候没当过熊孩子呀

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @小小编辑:推荐歌曲《行尸走肉》- amazarashi 《行尸走肉》- amazarashi 手机党少年们想听歌,请使劲儿戳(这里) @神话 :周五了,周末干啥...

小小编辑
今天
123
6
docker部署springboot项目

安装docker 菜鸟教程 springboot项目 maven依赖 <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001......

yimingkeji
今天
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部