cmd 看图片十六进制_Fun Python | 女朋友让我把这网站上的图片都下载下来

f6c6cea90a8a86076e4663a4b66f5ecc.gif

小猴子的女朋友最近要求老多了,前几天发现一个宝贝网站,上面的图片真的很不错,就想把图片都保存下载。

可是她右键另存为没反应,就过来找我。

女朋友:这个网站的图片怎么都不能右键保存呢?

小猴子:怎么可能,只要是眼睛能看到的,都可以保存。

女朋友:那你帮我把这个网站上的图片都下载下来吧,都要分好类,每个文件夹一类。

小猴子:……

389c061f857c2c9bbe87e75dbaeaa0cb.gif

查看图片的源地址

右键保存,其实是前端页面禁用了鼠标的右键另存的行为而已,想找到图片的源地址很简单。在我之前的文章我也介绍过,还是F12打开开发者调试工具,定位到图片,其中src就是图片的源地址。

86eecb042a50aff6c6b87b6abe5d69e2.png

批量下载图片

但是分类吧,图片那么多,类别又很多,手动操作起来真的很麻烦。还是用代码来解决吧。

我们会用到两个很有用的python库,beautifulsoup和you-get,后期再单独介绍这两个库,先把女朋友的任务完成了

分析目标网站

https://7esl.com/picture-dictionary/

每个类别都有一个目录,点击就可跳转到目标页面,目标页面上有大量该类别的图片。

7940b10053c9880a0af5d59ca05e94f1.png

步骤一:获取网页html源码

def get_html(url):
res = requests.get(url)
return res.text

步骤二:获取下载目录及跳转链接

def get_sub_url(base_url):
html = get_html(base_url)
soup = BeautifulSoup(html, "lxml")
soup_ul = soup.find_all("ul")
pic_url_dict = {}
for ul_item in soup_ul:
if ul_item['class'][0] == "bellows-nav":
for a_item in ul_item.find_all("a"):
item_content = a_item.get_text()
item_link = a_item.get("href")
pic_url_dict[item_content] = item_link
return pic_url_dict

知识点:beautifulsoup处理html,提取目录和跳转链接

步骤三:获取图片源地址

def get_pic_url(pic_url):
html = get_html(pic_url)
soup = BeautifulSoup(html, "lxml")
pic_url_lst = []
for item in soup.find_all("img"):
item_src = item.get("src")
if item_src.startswith("https") and item_src[-4:] in (".jpg", ".png", ".bmp"):
pic_url_lst.append(item_src)
return pic_url_lst

知识点:beautifulsoup处理目标网页html,提取网页上所有图片的地址

步骤四:下载目标网页所有图片到指定目录

def dld_pic_to_dir(file_path, pic_url):
you_get_cmd = 'you-get -o "{}" "{}"'.format(file_path, pic_url)
print(you_get_cmd)
os.system(you_get_cmd)

知识点: you-get下载图片到指定目录

完整代码

50行代码搞定!!!

import os
import requests
from bs4 import BeautifulSoup

def get_html(url):
res = requests.get(url)
return res.text

def get_sub_url(base_url):
html = get_html(base_url)
soup = BeautifulSoup(html, "lxml")
soup_ul = soup.find_all("ul")
pic_url_dict = {}
for ul_item in soup_ul:
if ul_item['class'][0] == "bellows-nav":
for a_item in ul_item.find_all("a"):
item_content = a_item.get_text()
item_link = a_item.get("href")
pic_url_dict[item_content] = item_link
return pic_url_dict

def get_pic_url(pic_url):
html = get_html(pic_url)
soup = BeautifulSoup(html, "lxml")
pic_url_lst = []
for item in soup.find_all("img"):
item_src = item.get("src")
if item_src.startswith("https") and item_src[-4:] in (".jpg", ".png", ".bmp"):
pic_url_lst.append(item_src)
return pic_url_lst


def dld_pic_to_dir(file_path, pic_url):
you_get_cmd = 'you-get -o "{}" "{}"'.format(file_path, pic_url)
print(you_get_cmd)
os.system(you_get_cmd)


if __name__ == '__main__':
picture_dictionary_base_url = "https://7esl.com/picture-dictionary/"
pic_url_dict = get_sub_url(picture_dictionary_base_url)
save_path = "d:/haha"
for dir_name, sub_url in pic_url_dict.items():
print(dir_name, sub_url)
output_pic_path = os.path.join(save_path, dir_name)
if not os.path.exists(output_pic_path):
os.makedirs(output_pic_path)
for pic_src in get_pic_url(sub_url):
pic_name = pic_src.split("/")[-1]
if os.path.exists(os.path.join(output_pic_path, pic_name)):
print(pic_name, " exist")
else:
print(pic_src)
dld_pic_to_dir(output_pic_path, pic_src)

效果

994f7898ceeebdde2c4dfbaac59dc9a7.gif

猴哥带你飞,青春不迷茫~~

f25b435a1eb9effb0e2223d2d9242989.png
<<>>
点个“在看”,好东西跟朋友一起分享
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值