【网络安全带你练爬虫-100练】第10练:re的正则匹配、文件夹创建、图片下载

这篇具有很好参考价值的文章主要介绍了【网络安全带你练爬虫-100练】第10练:re的正则匹配、文件夹创建、图片下载。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、目标1:正则匹配图片的URL

二、目标2:创建文件夹

三、目标3:保存图片到test文件夹中

 四、网络安全小圈子


一、目标1:正则匹配图片的URL

URL位置

我们可以找到img都在这个标签里面

【网络安全带你练爬虫-100练】第10练:re的正则匹配、文件夹创建、图片下载,【网络安全-带你练爬虫】,爬虫,web安全,安全

 

 

请求方法GET

【网络安全带你练爬虫-100练】第10练:re的正则匹配、文件夹创建、图片下载,【网络安全-带你练爬虫】,爬虫,web安全,安全

 

提取URL位置

需要掌握的关键字

.*?
//表示匹配任意字符(除换行符)

(.*?)
//表示匹配任意字符(除换行符)0次或多次,尽可能少地匹配,并将这部分内容作为一个分组

目标标签如下:

<div class="thumb">
    <a target="_blank" style="background:url(https://pic.chinaz.com/picmap/thumb/202306271716277907_5.jpg);background-size:cover;background-position:center" rel="noopener noreferrer" href="https://www.chinaz.com/2023/0708/1541405.shtml">
    </a>
</div>

需要提取的内容如下:

(多加了一个\为转义字符)

img_url = <div class="thumb">.*?url\((.*?)).*?</div>

爬取到所有的格式相符的图片内容

res:是一个正则表达式,用于匹配的模式。

img_url:是要进行匹配的字符串。

re.S:是re模块中的一个标志参数,表示将字符串视为单行,即将换行符也视为普通字符

img_url_list = re.findall(res,img_url,re.S)

运行结果:

将目标URL都爬取到了

【网络安全带你练爬虫-100练】第10练:re的正则匹配、文件夹创建、图片下载,【网络安全-带你练爬虫】,爬虫,web安全,安全

 


完整代码:

import re
import requests

def get_img():
    url = 'https://www.chinaz.com/'
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:107.0) Gecko/20100101 Firefox/107.0",
    }

    res = requests.get(url,headers=headers,timeout=10).text
    img_url = '<div class="thumb">.*?url\((.*?));.*?</div>'

    img_url_list = re.findall(img_url,res,re.S)
    print(img_url_list)

if __name__ == '__main__':
    get_img()


二、目标2:创建文件夹

判断文件夹是否存在来决定是否创建文件夹,并使用os.makedirs()函数递归创建文件夹。如果文件夹已存在,则不会进行任何操作

('./test'也可以换为参数进行传值)

(os.mkdir()函数是不会递归创建文件夹)

import os

if not os.path.exists('./test'):    
    os.makedirs('./test')


三、目标3:保存图片到test文件夹中

处理数据

首先依次遍历图片的URL,然后除去非必要的字符

使用replace()函数将非必要字符替换为空

    for u in img_url_list:
        img_u = u.replace("(", "").replace(")", "")
        print(img_u)

运行后,文件夹已创建,URL也遍历成功

【网络安全带你练爬虫-100练】第10练:re的正则匹配、文件夹创建、图片下载,【网络安全-带你练爬虫】,爬虫,web安全,安全

 

获取图片数据

有图片地址后get就可以请求到

.content返回二进制格式数据

        image = requests.get(url=img_u,headers=headers,timeout=10).content

给文件命名

取url最后的那个为他的名字

也就是https://pic.chinaz.com/picmap/thumb/202306271716277907_5.jpg

取        202306271716277907_5.jpg

以此类推

        img_name = img_u.split('/')[-1]

将图片保存到本地

图片路径

下载图片到本地路径

        img_path =  './test/' + img_name
        with open(img_path,'wb') as f:
            f.write(img_data)
        print(img_name + '下载成功!')

运行结果:

发现还有一个杂数据进入了导致报错

【网络安全带你练爬虫-100练】第10练:re的正则匹配、文件夹创建、图片下载,【网络安全-带你练爬虫】,爬虫,web安全,安全

 

然后我果断加了一个if判断语句

        if re.match(r'https?://', u):

【网络安全带你练爬虫-100练】第10练:re的正则匹配、文件夹创建、图片下载,【网络安全-带你练爬虫】,爬虫,web安全,安全

 最后下载成功了【网络安全带你练爬虫-100练】第10练:re的正则匹配、文件夹创建、图片下载,【网络安全-带你练爬虫】,爬虫,web安全,安全

 

完整代码:

import re
import requests
import os

def get_img():
    url = 'https://www.chinaz.com/'
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:107.0) Gecko/20100101 Firefox/107.0",
    }
    res = requests.get(url, headers=headers, timeout=10).text
    img_url = r'<div class="thumb">.*?url\((.*?)\);.*?</div>'
    img_url_list = re.findall(img_url, res, re.S)
    for u in img_url_list:
        if re.match(r'https?://', u):
            img_u = u.replace("(", "").replace(")", "")
            img_data = requests.get(url=img_u, headers=headers, timeout=10).content
            img_name = img_u.split('/')[-1]
            img_path = './test/' + img_name
            with open(img_path, 'wb') as f:
                f.write(img_data)
            print(img_name + '下载成功!')
        else:
            continue

if __name__ == '__main__':
    if not os.path.exists('./test'):
        os.makedirs('./test')
    get_img()


 四、网络安全小圈子

README.md · 书半生/网络安全知识体系-实战中心 - 码云 - 开源中国 (gitee.com)https://gitee.com/shubansheng/Treasure_knowledge/blob/master/README.md

GitHub - BLACKxZONE/Treasure_knowledgehttps://github.com/BLACKxZONE/Treasure_knowledge文章来源地址https://www.toymoban.com/news/detail-546491.html

到了这里,关于【网络安全带你练爬虫-100练】第10练:re的正则匹配、文件夹创建、图片下载的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【网络安全带你练爬虫-100练】第14练:文件内容的读取、取出

    目录 一、目标1:把文件内容遍历取出 二、目标2:把文件内容全部取出 三、网络安全O  (1)如果文件脚本在不同目录 (2)如果文件直接和脚本在同一目录  (1)存放取出的元素 (2)将目标文件内容的元素依次取出 (for循环) (3)所有元素依次添加进列表中 (4)完整

    2024年02月16日
    浏览(42)
  • 【网络安全带你练爬虫-100练】第1练:发送请求获取返回内容

    目录 一、前置知识1 二、前置知识2 requests库的7个主要方法 语法: 注解: 三、扩展工具 四、网络安全小圈子 顾名思义网络爬虫第一步,爬取目标 URL的网页的信息 可以使用 urllib.request 和 requests发送请求,然后返回对应的数据(py3) 1、urllib 库是 Python 内置的 2、requests 库是

    2024年02月12日
    浏览(41)
  • 【网络安全带你练爬虫-100练】第23练:文件内容的删除+写入

    目录 0x00 前言: 0x02 解决: 本篇博文可能会有一点点的超级呆 你是不是也会想: 使用pyrhon将指定文件夹位置里面的1.txt中数据全部删除以后----然后再将参数req_text的值写入到1.txt (小呆呆实锤) 区分一下: “w”模式: 使用 \\\"w\\\" 模式打开一个文件时,如果该文件已经存在,

    2024年02月09日
    浏览(40)
  • 【网络安全带你练爬虫-100练】第6练:内嵌发包提取数据

    目录 一、分析目标: 二、代码实现 目标1:对于捕获的URL内嵌发包 目标2:找到电话和邮箱的位置 目标3:提取电话和邮箱 三、完整代码 四、网络安全小圈子 (注:需要带上登录成功后的cookie发包) 点击进去爬取每个企业里面的电话、邮箱 (我们是来投简历的,切勿干非法

    2024年02月12日
    浏览(45)
  • 【网络安全带你练爬虫-100练】第11练:xpath快速定位提取数据

    目录 一、目标1:使用etree解析数据 二、目标2:使用xpath爬取指定数据 三、目标3:提取指定数据  四、网络安全小圈子 其余的不用过多介绍,前面的练习都给大家已经过了一遍 其中数据解析代码如下 对返回的内容进行UTF-8解码,不然会出现乱码 我们来爬一下这几个标题  

    2024年02月13日
    浏览(80)
  • 【网络安全带你练爬虫-100练】第5练:爬虫的翻页操作+错误情况过滤

    目录 一、翻页分析: 二、代码逻辑 1、入口程序修改 2、page参数传入 三、完整代码 1、运行结果 2、错误分析: 3、缺陷代码: 4、完善逻辑: 5、完善代码: (说在前面,任何逻辑都有很多方法实现,我们先从最笨的讲起) (注:其中的cookie需要填自己的) 通过对比第一页与

    2024年02月12日
    浏览(46)
  • 【网络安全带你练爬虫-100练】第19练:使用python打开exe文件

    目录 一、目标1:调用exe文件 二、目标2:调用exe打开文件 1、subprocess 模块允许在 Python 中启动一个新的进程,并与其进行交互 2、subprocess.run() 函数来启动exe文件 3、subprocess.run([\\\"文件路径\\\"],check=True/) 4、check:如果程序返回一个非零的退出码,subprocess.run() 函数就会抛出一个

    2024年02月11日
    浏览(40)
  • 【网络安全带你练爬虫-100练】第8练:json数据的最小项提取

    目录 一、目标1:爬取指定json中数据 二、目标2:循环取json中数据 三、目标3:提取每个数据中的某一项 四、网络安全小圈子 爬取data里数据   核心代码: (1)json.loads()方法可用于解析有效的JSON字符串并将其转换为Python字典 (2)dirt1[\\\'data\\\']是打印json中的data部分 运行结果:

    2024年02月13日
    浏览(45)
  • 【网络安全带你练爬虫-100练】第22练:数据包中参数提取与处理

    目录 一、目标1:GET数据包的处理 1、GET数据包中参数的提取 2、GET请求中 统计参数个数 二、目标2:POST数据包的处理 1、post中参数个数的提取 2、POST请求中 统计参数个数 (与GET类似,就不再做叙述了)

    2024年02月10日
    浏览(50)
  • 【网络安全带你练爬虫-100练】第21练:批量获取文件夹中文件名

    目录 一、目标1:使用python爬取指定文件夹中的文件名 二、目标2:在文件夹指定目录打开命令行 方法一:使用 os 模块 将 /path/to/folder 替换为实际的文件夹路径。 os.listdir() 函数用于获取指定文件夹中的文件名列表,然后可以遍历列表并处理每个文件名 方法二:使用 glob 模块

    2024年02月09日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包