精美壁纸爬虫分享

2022-02-12  本文已影响0人  Bllose

项目地址
如何可以上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
上一篇 下一篇

猜你喜欢

热点阅读