美文网首页
精美壁纸爬虫分享

精美壁纸爬虫分享

作者: Bllose | 来源:发表于2022-02-12 17:34 被阅读0次

    项目地址
    如何可以上GitHub就可以进去。

    BDWP分享

    1bq4MmIJNG4VEn8nnYsADYA?pwd=1732
    接在后面,你懂的

    使用方法

    下载到本地路径, 打开cmd到下载路径, 然后输入下面命令。
    首先是通过 help 查看主要参数

    >graber_cmd --help
    Usage: graber_cmd [OPTIONS]
    
    Options:
      --level TEXT   过程中日志级别, 默认是 INFO
      --size TEXT    下载壁纸大小
      --dir TEXT     下载后保存路径
      --proxy TEXT   使用的代理地址
      --cur INTEGER  从第几页开始下载
      --help         Show this message and exit.
    

    目前还不支持直接走系统的代理, 如果需要翻墙才能下载, 那么需要指定代理的使用。
    否则会报错:

    >graber_cmd
    ERROR:graber:不支持操作系统默认代理,请通过 --proxy 你的代理地址 正确使用代理功能
    

    在window10中,打开“代理”或者“更改代理设置” 设置页面,就能看到【使用代理服务器】栏位, 下面有具体代理地址和端口。


    proxy_example.png

    然后将这个地址写入代理参数--proxy即可。
    比如:

    >graber_cmd --proxy 127.0.0.1:63571
    INFO:graber:使用代理127.0.0.1:63571
    INFO:graber:即将开始下载,将保存到路径:/temp
    INFO:graber:尝试下载第1张图片: /w/33954/
    

    技术要点

    
    import imp
    
    import requests,os,sys
    
    from bs4 import BeautifulSoup
    
    import logging
    
    from typing import Tuple
    
    from urllib3.exceptions import IncompleteRead,ProtocolError,MaxRetryError
    
    from requests.exceptions import ChunkedEncodingError,SSLError
    
    from ssl import SSLEOFError
    
    

    方法主体

    def main():
        argv_size = len(sys.argv)
    
        if argv_size >= 3:
            size = sys.argv[1]
            dir = sys.argv[2]
            size_list = ['2560x1440', '1600x900', '2560x1600', '1920x1200', '1680x1050', '1440x900', '1280x800']
            if size not in size_list:
                log.error('指定的图片大小不存在, 请总下列大小中选择! \r\n {}'.format(str(size_list)))
            elif not os.path.isdir(dir):
                log.error('请输入正确的保存路径!')
            else:
                try:
                    response = requests.get('https://erowall.com/')
                    max_page = get_the_max_page_number(response.content)
    
                    if argv_size > 3:
                        cur_page = int(sys.argv[3])
    
                        for cur in range(cur_page, max_page):
                            cur_rsp = requests.get('https://erowall.com/dat/page/'+str(cur))
                            log.info("开始第{}页下载".format(cur))
                            download_each_page(cur_rsp.content, size, dir)
                    else:
                        download_each_page(response.content, size, dir)
                        for cur in range(2, max_page):
                            log.info("开始第{}页下载".format(cur))
                            cur_rsp = requests.get('https://erowall.com/dat/page/'+str(cur))
                            download_each_page(cur_rsp.content, size, dir)   
                except (IncompleteRead, ProtocolError, ChunkedEncodingError) as e:
                    log.error("请求异常结束!")
                    return 
                except (MaxRetryError, SSLError, SSLEOFError) as e:
                    log.error("不支持代理,请关闭代理后重试.")
                    return
    
        else:
            log.info("请指定图片大小和保存路径, 比如: graber 2560x1440 D:/temp")    
    

    使用方法:
    1、下载打包好的:graber.exe
    2、执行下面命令 graber 图片大小 保存地址

    graber 2560x1440 D:/temp
    

    相关文章

      网友评论

          本文标题:精美壁纸爬虫分享

          本文链接:https://www.haomeiwen.com/subject/xgxxlrtx.html