【python日常学习】爬取4K桌面壁纸
1.png这个网站都是4K的桌面壁纸。
import re
import requests
import os
from time import sleep
def get_page():
page = eval(input("请输入要下载页数(共134页):"))
return page
def get_picsurl(resolution, page=1):
url = f"https://bing.ioliu.cn/ranking?p={page}"
res = requests.get(url, headers=headers)
urls = re.findall('pic=(.*?)\\.jpg', res.text)
_old_resolution = urls.split("_")[-1]
return {url.split("/")[-1].replace(_old_resolution, resolution): url.replace(_old_resolution, resolution) + ".jpg"
for url in urls}
def download_pic(pics,a):
if os.path.isdir("F:\Python爬取\图片\必应壁纸") != True:
os.makedirs(r"F:\Python爬取\图片\必应壁纸")
try:
for pic_name, pic_url in pics.items():
res = requests.get(pic_url, headers=headers)
with open(f"F:\Python爬取\图片\必应壁纸\{pic_name}.jpg", mode="wb") as f:
f.write(res.content)
print(f"{pic_name} 下载完成")
a = a+1
return a
except Exception as e:
print("下载出错", e)
if __name__ == '__main__':
headers = {
"User-Agent": ("Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) "
"Gecko/20100101 Firefox/64.0")
}
page = get_page()
i = 1
pages = 0
while i <= page:
print(f"当前第{i}页,共需要下载{page}页")
pics = get_picsurl("1920x1080", i)
pages = download_pic(pics,pages)
i += 1
print("下载完成!共成功下载{}张图片。".format(pages))
本帖最后由 kumamiko 于 2020-9-4 17:45 编辑
感谢楼主,但是你的python网络请求没有延时,会不会请求频率过高?
最近玩 powershell 有点上头(有点走火入魔了),拿powershell实现了一遍 ,复制到powershell回车就行了
1..(read-host '输入页数') | %{ $folder = "page-$_" ; `
if(!(Test-Path $folder)){ mkdir $folder} ;`
::Matches((iwr ('https://bing.ioliu.cn/ranking?p=' + $_)).Content, 'pic=(.*?).jpg') `
| %{ iwr ($_.Groups.value + '.jpg') -OutFile ('.\{0}\{1}.jpg'-f $folder,$_.Groups.value.split('/')[-1]);`
sleep 2 };`
sleep 3 } 清风徐来L 发表于 2020-7-31 17:51
这个网站是屏蔽鼠标右键吗,我怎么查看不了源代码
F12就可以了。 好资源,先收藏着 谢谢楼主分享,超棒 学习python的一次不错的实践! 不错,感谢分享 {:17_1068:}感谢分享 感谢分享,学习一下 正好在学习爬虫,感谢楼主的热心分享 好东西啊{:1_893:} 正好在学 谢谢分享 研究一下代码