码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Python爬虫批量下载图片


    一、思路:

            1. 分析URL,图片的URL内嵌于base_url的返回当中

            2. 下载图片

    二、代码 

    1. import time
    2. import requests
    3. import os
    4. from lxml import etree
    5. class DownloadImg():
    6. '''
    7. 爬虫进行美女图片下载
    8. '''
    9. def __init__(self):
    10. self.url = 'http://xxxxxx/4kmeinv/'
    11. self.base_url = 'xxxxxxxxxx'
    12. self.headers = {
    13. 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36'
    14. }
    15. self.page = 1
    16. #创建图片存储目录
    17. def create_img_dir(self):
    18. current_dir = os.path.dirname(__file__)
    19. img_dir = os.path.join(current_dir,'img')
    20. if not os.path.exists(img_dir):
    21. os.makedirs(img_dir)
    22. return img_dir
    23. #下载图片
    24. def download_img(self,url_list):
    25. for url in url_list:
    26. res = requests.get(url=url,headers=self.headers).text
    27. tree = etree.HTML(res)
    28. self.create_img_dir()
    29. #解析
    30. for li in tree.xpath('//div[@class="slist"]/ul/li'):
    31. img_url = li.xpath('./a/img/@src')[0]
    32. full_img_url = self.base_url + img_url
    33. print(full_img_url)
    34. img_name = full_img_url.split('/')[-1]
    35. full_img_name = os.path.join(self.create_img_dir(), img_name)
    36. # 开始下载图片
    37. with open(full_img_name, 'wb') as fs:
    38. content = requests.get(url=full_img_url, headers=self.headers).content
    39. fs.write(content)
    40. print("{}图片下载完成 ".format(img_name))
    41. time.sleep(1)
    42. #生成图片URL,返回每个page组成的列表
    43. def get_img_url(self,page):
    44. url_list = [self.url]
    45. if page == 1 :
    46. return url_list
    47. elif page > 1 :
    48. '''
    49. https://xxxxxxx/index_3.html
    50. '''
    51. for i in range(1,page+1):
    52. if i == 1 :
    53. continue
    54. multi_url = self.url + "index_{}.html".format(str(page))
    55. url_list.append(multi_url)
    56. return url_list
    57. if __name__ == '__main__':
    58. #下载页数,2页
    59. page = 2
    60. #定义类对象
    61. down_img = DownloadImg()
    62. url = down_img.get_img_url(2)
    63. print(url)
    64. down_img.download_img(url)
    65. print("图片全部下载完成,程序退出")

  • 相关阅读:
    acwing.台阶-nim游戏
    Java:Java和C有什么区别?
    群晖 DSM 7.0 Synology Photos IOS | Android 客户端下载
    Web前端:当今10个流行的JavaScript框架
    【Redis】list常用命令&内部编码&使用场景
    tensorflow 中的Variable 和 get_variable
    工业互联网企业身份与访问控制课题研究与探索
    【深度学习】 图像识别实战 102鲜花分类(flower 102)实战案例
    证书管理:从手工到平台化
    OpenAI与微软合作,构建 ChatGPT 5 模型;10天准确天气预报
  • 原文地址:https://blog.csdn.net/weixin_41910699/article/details/134425449
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号