利用Python实现图片批量下载
1 from email import header 2 import requests 3 from lxml import etree 4 import sys 5 import optparse 6 from urllib import parse 7 import time 8 9 class ImagesDownloader: 10 def __init__(self) -> None: 11 self.url = self.get_params() 12 self.iamges_store = 'images/' 13 self.header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0'} 14 15 def get_params(self): 16 parser = optparse.OptionParser("Usage: <Program> -u url") 17 parser.add_option('-u', '--url', dest='url', type='string', help='Specify url') 18 options, args = parser.parse_args() 19 if options.url is None: 20 print(parser.usage) 21 sys.exit(0) 22 return options.url 23 24 def get_webpage(self, url): 25 try: 26 response = requests.get(url=url, headers=self.header).text 27 return response 28 except Exception as e: 29 print(e) 30 sys.exit(0) 31 32 def download_image(self, url, filename): 33 try: 34 response = requests.get(url=url, headers=self.header).content 35 with open(filename, 'wb') as f: 36 f.write(response) 37 print("Downloaded image successfully: %s" % filename.split('/')[-1]) 38 except Exception as e: 39 print(e) 40 sys.exit(0) 41 42 43 def extract_images_links(self, response): 44 images_links = [] 45 try: 46 html = etree.HTML(response) 47 res = html.xpath('//img/@src') 48 for each in res: 49 if each.startswith('//'): 50 images_links.append('http:'+each) 51 elif each.startswith('http://') or each.startswith('https://'): 52 images_links.append(each) 53 else: 54 images_links.append(parse.urljoin(self.url, each)) 55 56 return images_links 57 except Exception as e: 58 print(e) 59 sys.exit(0) 60 61 def run(self): 62 response = self.get_webpage(self.url) 63 images_links = self.extract_images_links(response) 64 # print(images_links) 65 for link in images_links: 66 print("Download image from : %s" % link) 67 filename = link.split('/')[-1] 68 filepath = self.iamges_store + filename 69 self.download_image(link, filepath) 70 time.sleep(2) 71 72 if __name__ == "__main__": 73 imagedownload = ImagesDownloader() 74 imagedownload.run() 75 76
STRIVE FOR PROGRESS,NOT FOR PERFECTION
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!