• python脚本-网页爬虫获取网页图片


    python脚本-网页爬虫获取网页图片

    代码

    import requests
    import re
    import time
    url="http://10.9.47.154/python-spider/"
    # 爬取网站的url
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.5195.102 Safari/537.36"
    }
    # 设置请求头
    def gethtml(url):
        res=requests.get(url=url,headers=headers)
        return res.content
    # 该函数获取目标网站的源码(二进制)
    
    def getimgpath(html):
        imgpath=re.findall(r"style/\w*\.jpg",html)
        return imgpath
    # 该函数获取网页中图片路径,并形成列表
    
    def download(img_save_path,img_url):
        with open(img_save_path,"wb") as f:
            f.write(gethtml(url=img_url))
    # 该函数为下载图片,第一个参数为保存的路径,第二个为下载图片的完整路径
    
    html=gethtml(url).decode()
    path1=getimgpath(html=html)
    # 此处html为获取网页的二进制源码并decode转码,path1为图片路径列表
    
    for i in path1:
        # i 为path1列表中的每一个元素
        img_url=url + i
        # 拼接完整的图片路径
        img_save_path=f"./img/{time.time()}.jpg"
        # 时间戳命名,总体为拼接保存的路径
        download(img_save_path=img_save_path,img_url=img_url)
        # 执行下载函数,传参
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    效果

    image-20231102114143056

    image-20231102114225871

    相关模块参数

    模块中的请求方法

    请求方法说明
    requests.get()GET 方法
    requests.post()
    requests.head()只返回响应头部,没有响应正文。
    requests.options()
    requests.put()
    requests.delete()

    请求方法中的参数

    参数名字参数含义
    url请求URL 地址
    headers自定义请求头部
    params发送GET 参数
    data发送POST 参数
    timeout请求延时
    files文件上传数据流

    响应对象中属性

    方法名解释
    response.text响应正文(文本方式)
    response.content响应正文(二进制)
    response.status_code响应状态码
    response.url发送请求的URL 地址
    response.headers响应头部
    response.request.headers请求头部
    response.cookiescookie 相关信息

    re 模块

    从网页内容中提取图片地址。

    正则表达式(RE),是一些由字符和特殊符号组成的字符串,它们能按某种模式匹配一系列有相似特征的字符串。

    • 从哪一个字符串中搜索什么内容;
    • 规则是什么(模式问题)。

    匹配单个字符

    记号说明
    .匹配任意单个字符(换行符除外). 表示真正的.
    […x-y…]匹配字符集合里的任意单个字符
    [^…x-y…]匹配不在字符组里的任意单个字符
    \d匹配任意数字,与[0-9] 同义
    \w匹配任意数字、字母、下划线,与[0-9a-zA-Z_] 同义
    \s匹配空白字符,与[\r\v\f\t\n] 同义

    匹配一组字符

    记号说明
    字符串匹配字符串值
    字符串1|字符串2匹配字符串1或字符串2
    *左邻第一个字符出现0 次或无穷次
    +左邻第一个字符最少出现1 次或无穷次
    ?左邻第一个字符出现0 次或1 次
    {m,n}左邻第一个字符出现最少m 次最多n 次

    其他元字符

    记号说明
    ^匹配字符串的开始 集合取反
    $匹配字符串的结尾
    \b匹配单词的边界,单词包括\w 中的内容
    ()对字符串分组
    \数字匹配已保存的子组

    核心函数

    核心函数说明
    re.findall()在字符串中查找正则表达式的所有(非覆盖)出现;返回一个匹配对象的列表。
    re.match()尝试用正则表达式模式从字符串的开头匹配 如果匹配成功,则返回一个匹配对象 否则返回None
    re.search()在字符串中查找正则表达式模式的第一次出现 如果匹配成,则返回一个匹配对象 否则返回None
    re.group()使用match 或者search 匹配成功后,返回的匹配对象 可以通过group() 方法获取得匹配内容
    re.finditer()和findall() 函数有相同的功能,但返回的不是列表而是迭代器 对于每个匹配,该迭代器返回一个匹配对象
    re.split()根据正则表达式中的分隔符把字符分割为一个列表,并返回成功匹配的列表字符串也有类似的方法,但是正则表达式更加灵活
    re.sub()把字符串中所有匹配正则表达式的地方换成新的字符串
    re.split()根据正则表达式中的分隔符把字符分割为一个列表,并返回成功匹配的列表字符串也有类似的方法,但是正则表达式更加灵活
    re.sub()把字符串中所有匹配正则表达式的地方换成新的字符串
  • 相关阅读:
    RK3568-clock
    小学数学学习:神奇的走马灯数 142857
    broot:CLI file explorer命令行版资源管理器(windows+linux+...)
    L4.linux命令每日一练 -- 第二章 文件和目录操作命令 -- pwd和cd命令
    thinkphp6 指令任务 宝塔定时任务
    Linux 7:mybash的实现和进程间通信
    什么是防火墙?详解三种常见的防火墙及各自的优缺点
    Java排序算法之贪心算法
    什么是响应式对象?响应式对象的创建过程?
    ubuntu终端命令行下如何使用NetworkManager(netplan)来配置wifi网络
  • 原文地址:https://blog.csdn.net/qq_58683895/article/details/134178987