• 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("图片全部下载完成,程序退出")

  • 相关阅读:
    laravel+sse实现实时推送
    Delphi 打包文件到APK安装包中
    配置参考一
    生信基因序列比对相关软件安装fastqc、hisat2、samtools;GATK docker安装
    云厂商为什么都在冲这个KPI?
    【无标题】
    机器学习——聚类算法
    (图论) 827. 最大人工岛 ——【Leetcode每日一题】
    大容量疯了!居然想把磁带放到硬盘,100TB+是否可以实现?
    Nginx性能优化(超详细)
  • 原文地址:https://blog.csdn.net/weixin_41910699/article/details/134425449