• 大小: 4KB
    文件类型: .py
    金币: 2
    下载: 1 次
    发布日期: 2021-06-06
  • 语言: Python
  • 标签: 爬虫  python代码  

资源简介

可以直接下载整站的图片
代码中使用多线程进行批量下载
代码中相关的内容已经加了注释 下载的同学应该可以自行修改里面的代码了

资源截图

代码片段和文件信息

import requests
import os
from lxml import etree
from threading import *
from time import sleep

nMaxThread = 3  #这里设置需要开启几条线程
ThreadLock = BoundedSemaphore(nMaxThread)

gHeads = {
    “User-Agent“:“Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML like Gecko) Chrome/55.0.2883.87 Safari/537.36“
}

class Meizitu(Thread):
    #构造函数
    def __init__(selfmainRefererurltitle):
        Thread.__init__(self) #调用父类构造函数
        self.MainReferer = mainReferer  
        self.url = url
        self.title = title[3:-4]  #这里是为了把给删除  因为网站中的titles是这个是一个标题  同时 正好是3 右边 正好是-4

    #线程开始函数
    def run(self):
        try:
            urlList = self.GetPhotoUrl()
            if len(urlList) > 0 and urlList != None:
                self.SavePath(urlList)
            
        finally:#当线程执行完成之后释放 说明这个线程已经结束了 不管是异常结束还是正常结束 他都是结束了 那么就需要启动下一个新的线程来执行 新的内容了 
            ThreadLock.release()

    #获取图片url列表
    def GetPhotoUrl(self):
        heads={
            “Referer“:self.MainReferer
        }
        heads.update(gHeads)
        html = requests.get(self.urlheaders=heads)
        if html.status_code == 200:
            xmlContent = etree.HTML(html.text)
            urlList = xmlContent.xpath(“//div[@id=‘picture‘]/p/img/@src“)  #获取所有图片列表
            return urlList
        else:
            return None

    #保存图片 如果文件夹不存在则创建文件夹
    def SavePath(selfurlList):
        heads = {
            “Referer“: self.url #这里是referer是因为网站有防盗链 加了这个字段就可以过掉他的防盗链
        }
        heads.update(gHeads)
        savePath = “./photo/%s“ % self.title
        if not os.path.exists(savePath):  #判断文件夹是否存在
            os.makedirs(savePath)   #makedirs 是递归创建目录  mkdir是创建目录 区别就是在于递归是可以创建深层

评论

共有 条评论