精美壁纸爬虫分享
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