py1-爬取贴吧图片

2022-10-26  本文已影响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)
上一篇下一篇

猜你喜欢

热点阅读