美文网首页
py1-爬取贴吧图片

py1-爬取贴吧图片

作者: 田陌允 | 来源:发表于2022-10-26 10:37 被阅读0次

    安装python:安装教程
    Vscode 推荐

    获取网址信息

    #获取网址信息 k为页码传参
    def getHtml(url, k):        
        print('start-gethtml' + " Page %s" % k)
        # page = urllib.request.urlopen(url)  # urllib.request.urlopen()方法用于打开一个URL地址
        # html = page.read()  # read()方法用于读取URL上的数据
        # tip 1 模拟真人操作
        headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36 Edg/87.0.664.75'}
        page = urllib.request.Request(url, headers=headers)
        # page=requests.get(url, headers=headers)
        html=urllib.request.urlopen(page).read().decode("utf-8")
        return html
    

    定义要创建的目录

    # 定义要创建的目录
    stzz_path = "E:\\Python\\cat\\xxxx\\"
    

    爬取图片并保存到本地

    #爬取图片 k为页码传参
    def getImg(html, k):        
        reg = r'src="(https://imgsa.*?\.jpg)"' # 这个貌似是贴吧通用的
        imgre = re.compile(reg)
        imList = re.findall(reg, html) 
    
        #爬取图片命名
        x=0
        for i in imList:
            print(i)
            print(x)
            urllib.request.urlretrieve(i, stzz_path + '\%s\%s.jpg' % (k, x))
            x += 1
    

    自动建文件夹函数

    # 建文件夹
    def mymkdir(path):
        # 去除首位空格
        path=path.strip()
        # 去除尾部 \ 符号
        path=path.rstrip("\\")
        # 判断路径是否存在
        # 存在     True
        # 不存在   False
        isExists=os.path.exists(path)
        # 判断结果
        if not isExists:
            # 如果不存在则创建目录
            # 创建目录操作函数 多层
            os.makedirs(path) 
            print (path + ' 创建成功')
            return True
        else:
            # 如果目录存在则不创建,并提示目录已存在
            print (path + ' 目录已存在')
            return False
    

    爬取的贴吧网址

    url = "https://tieba.baidu.com/p/xxxxxxx?pn="  # 目标贴吧地址,?pn= 为页码索引
    

    由于贴吧有多页,开循环爬取

    #由于贴吧有多页,开循环爬取
    for k in range(1, 5):  # 从1开始遍历到5(不含5)
        # 调用函数
        mymkdir(stzz_path + ("\\%s" % k))
    
        ul = url+str(k)
        print(ul)
        html = getHtml(ul, k)
        getImg(html, k)
    

    完整代码

    from multiprocessing.util import is_exiting
    import os, sys
    import re
    import urllib.request
    
    #获取网址信息
    def getHtml(url, k):        
        print('start-gethtml' + " Page %s" % k)
        # page = urllib.request.urlopen(url)  # urllib.request.urlopen()方法用于打开一个URL地址
        # html = page.read()  # read()方法用于读取URL上的数据
        # tip 1 模拟真人操作
        headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36 Edg/87.0.664.75'}
        page = urllib.request.Request(url, headers=headers)
        # page=requests.get(url, headers=headers)
        html=urllib.request.urlopen(page).read().decode("utf-8")
        return html
    
    # 定义要创建的目录
    stzz_path = "E:\\Python\\cat\\stzz\\"
    #爬取图片
    def getImg(html, k):        
        reg = r'src="(https://imgsa.*?\.jpg)"'
        imgre = re.compile(reg)
        imList = re.findall(reg, html) 
    
        #爬取图片命名
        x=0
        for i in imList:
            print(i)
            print(x)
            urllib.request.urlretrieve(i, stzz_path + '\%s\%s.jpg' % (k, x))
            x += 1
    
    # 建文件夹
    def mymkdir(path):
        # 去除首位空格
        path=path.strip()
        # 去除尾部 \ 符号
        path=path.rstrip("\\")
        # 判断路径是否存在
        # 存在     True
        # 不存在   False
        isExists=os.path.exists(path)
        # 判断结果
        if not isExists:
            # 如果不存在则创建目录
            # 创建目录操作函数
            os.makedirs(path) 
            print (path + ' 创建成功')
            return True
        else:
            # 如果目录存在则不创建,并提示目录已存在
            print (path + ' 目录已存在')
            return False
    
    #爬取的贴吧网址
    url = "https://tieba.baidu.com/p/6222419479?pn="    
    
    #由于贴吧有14页,爬取的图片较多,这里先爬取一个网址的图片,图片保存在当前文件夹里
    for k in range(1, 5): 
        # 调用函数
        mymkdir(stzz_path + ("\\%s" % k))
    
        ul = url+str(k)
        print(ul)
        html = getHtml(ul, k)
        getImg(html, k)
    

    相关文章

      网友评论

          本文标题:py1-爬取贴吧图片

          本文链接:https://www.haomeiwen.com/subject/wbdazrtx.html