国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【網(wǎng)絡(luò)安全帶你練爬蟲-100練】第10練:re的正則匹配、文件夾創(chuàng)建、圖片下載

這篇具有很好參考價值的文章主要介紹了【網(wǎng)絡(luò)安全帶你練爬蟲-100練】第10練:re的正則匹配、文件夾創(chuàng)建、圖片下載。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

一、目標1:正則匹配圖片的URL

二、目標2:創(chuàng)建文件夾

三、目標3:保存圖片到test文件夾中

?四、網(wǎng)絡(luò)安全小圈子


一、目標1:正則匹配圖片的URL

URL位置

我們可以找到img都在這個標簽里面

【網(wǎng)絡(luò)安全帶你練爬蟲-100練】第10練:re的正則匹配、文件夾創(chuàng)建、圖片下載,【網(wǎng)絡(luò)安全-帶你練爬蟲】,爬蟲,web安全,安全

?

?

請求方法GET

【網(wǎng)絡(luò)安全帶你練爬蟲-100練】第10練:re的正則匹配、文件夾創(chuàng)建、圖片下載,【網(wǎng)絡(luò)安全-帶你練爬蟲】,爬蟲,web安全,安全

?

提取URL位置

需要掌握的關(guān)鍵字

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

(.*?)
//表示匹配任意字符(除換行符)0次或多次,盡可能少地匹配,并將這部分內(nèi)容作為一個分組

目標標簽如下:

<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" >
    </a>
</div>

需要提取的內(nèi)容如下:

(多加了一個\為轉(zhuǎn)義字符)

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

爬取到所有的格式相符的圖片內(nèi)容

res:是一個正則表達式,用于匹配的模式。

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

re.S:是re模塊中的一個標志參數(shù),表示將字符串視為單行,即將換行符也視為普通字符

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

運行結(jié)果:

將目標URL都爬取到了

【網(wǎng)絡(luò)安全帶你練爬蟲-100練】第10練:re的正則匹配、文件夾創(chuàng)建、圖片下載,【網(wǎng)絡(luò)安全-帶你練爬蟲】,爬蟲,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:創(chuàng)建文件夾

判斷文件夾是否存在來決定是否創(chuàng)建文件夾,并使用os.makedirs()函數(shù)遞歸創(chuàng)建文件夾。如果文件夾已存在,則不會進行任何操作

('./test'也可以換為參數(shù)進行傳值)

(os.mkdir()函數(shù)是不會遞歸創(chuàng)建文件夾)

import os

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


三、目標3:保存圖片到test文件夾中

處理數(shù)據(jù)

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

使用replace()函數(shù)將非必要字符替換為空

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

運行后,文件夾已創(chuàng)建,URL也遍歷成功

【網(wǎng)絡(luò)安全帶你練爬蟲-100練】第10練:re的正則匹配、文件夾創(chuàng)建、圖片下載,【網(wǎng)絡(luò)安全-帶你練爬蟲】,爬蟲,web安全,安全

?

獲取圖片數(shù)據(jù)

有圖片地址后get就可以請求到

.content返回二進制格式數(shù)據(jù)

        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 + '下載成功!')

運行結(jié)果:

發(fā)現(xiàn)還有一個雜數(shù)據(jù)進入了導(dǎo)致報錯

【網(wǎng)絡(luò)安全帶你練爬蟲-100練】第10練:re的正則匹配、文件夾創(chuàng)建、圖片下載,【網(wǎng)絡(luò)安全-帶你練爬蟲】,爬蟲,web安全,安全

?

然后我果斷加了一個if判斷語句

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

【網(wǎng)絡(luò)安全帶你練爬蟲-100練】第10練:re的正則匹配、文件夾創(chuàng)建、圖片下載,【網(wǎng)絡(luò)安全-帶你練爬蟲】,爬蟲,web安全,安全

?最后下載成功了【網(wǎng)絡(luò)安全帶你練爬蟲-100練】第10練:re的正則匹配、文件夾創(chuàng)建、圖片下載,【網(wǎng)絡(luò)安全-帶你練爬蟲】,爬蟲,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()


?四、網(wǎng)絡(luò)安全小圈子

README.md · 書半生/網(wǎng)絡(luò)安全知識體系-實戰(zhàn)中心 - 碼云 - 開源中國 (gitee.com)https://gitee.com/shubansheng/Treasure_knowledge/blob/master/README.md

GitHub - BLACKxZONE/Treasure_knowledgehttps://github.com/BLACKxZONE/Treasure_knowledge文章來源地址http://www.zghlxwxcb.cn/news/detail-546491.html

到了這里,關(guān)于【網(wǎng)絡(luò)安全帶你練爬蟲-100練】第10練:re的正則匹配、文件夾創(chuàng)建、圖片下載的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【網(wǎng)絡(luò)安全帶你練爬蟲-100練】第14練:文件內(nèi)容的讀取、取出

    【網(wǎng)絡(luò)安全帶你練爬蟲-100練】第14練:文件內(nèi)容的讀取、取出

    目錄 一、目標1:把文件內(nèi)容遍歷取出 二、目標2:把文件內(nèi)容全部取出 三、網(wǎng)絡(luò)安全O ?(1)如果文件腳本在不同目錄 (2)如果文件直接和腳本在同一目錄 ?(1)存放取出的元素 (2)將目標文件內(nèi)容的元素依次取出 (for循環(huán)) (3)所有元素依次添加進列表中 (4)完整

    2024年02月16日
    瀏覽(19)
  • 【網(wǎng)絡(luò)安全帶你練爬蟲-100練】第1練:發(fā)送請求獲取返回內(nèi)容

    【網(wǎng)絡(luò)安全帶你練爬蟲-100練】第1練:發(fā)送請求獲取返回內(nèi)容

    目錄 一、前置知識1 二、前置知識2 requests庫的7個主要方法 語法: 注解: 三、擴展工具 四、網(wǎng)絡(luò)安全小圈子 顧名思義網(wǎng)絡(luò)爬蟲第一步,爬取目標?URL的網(wǎng)頁的信息 可以使用 urllib.request 和 requests發(fā)送請求,然后返回對應(yīng)的數(shù)據(jù)(py3) 1、urllib 庫是 Python 內(nèi)置的 2、requests 庫是

    2024年02月12日
    瀏覽(14)
  • 【網(wǎng)絡(luò)安全帶你練爬蟲-100練】第23練:文件內(nèi)容的刪除+寫入

    【網(wǎng)絡(luò)安全帶你練爬蟲-100練】第23練:文件內(nèi)容的刪除+寫入

    目錄 0x00 前言: 0x02 解決: 本篇博文可能會有一點點的超級呆 你是不是也會想: 使用pyrhon將指定文件夾位置里面的1.txt中數(shù)據(jù)全部刪除以后----然后再將參數(shù)req_text的值寫入到1.txt (小呆呆實錘) 區(qū)分一下: “w”模式: 使用 \\\"w\\\" 模式打開一個文件時,如果該文件已經(jīng)存在,

    2024年02月09日
    瀏覽(21)
  • 【網(wǎng)絡(luò)安全帶你練爬蟲-100練】第2練:爬取指定位置數(shù)據(jù)

    【網(wǎng)絡(luò)安全帶你練爬蟲-100練】第2練:爬取指定位置數(shù)據(jù)

    目錄 一、思路 二、工具 三、代碼處理 第一部分:發(fā)起請求+接收響應(yīng)(不過多講) 第二部分:解析HTML頁面+提取數(shù)據(jù) 第三部分:處理數(shù)據(jù) 分解步驟,化繁為簡 爬蟲分為五步走: 發(fā)起HTTP請求:爬蟲使用HTTP協(xié)議向目標網(wǎng)址發(fā)送請求,請求獲取特定的HTML頁面。這可以通過使用

    2024年02月12日
    瀏覽(14)
  • 【網(wǎng)絡(luò)安全帶你練爬蟲-100練】第11練:xpath快速定位提取數(shù)據(jù)

    【網(wǎng)絡(luò)安全帶你練爬蟲-100練】第11練:xpath快速定位提取數(shù)據(jù)

    目錄 一、目標1:使用etree解析數(shù)據(jù) 二、目標2:使用xpath爬取指定數(shù)據(jù) 三、目標3:提取指定數(shù)據(jù) ?四、網(wǎng)絡(luò)安全小圈子 其余的不用過多介紹,前面的練習(xí)都給大家已經(jīng)過了一遍 其中數(shù)據(jù)解析代碼如下 對返回的內(nèi)容進行UTF-8解碼,不然會出現(xiàn)亂碼 我們來爬一下這幾個標題 ?

    2024年02月13日
    瀏覽(22)
  • 【網(wǎng)絡(luò)安全帶你練爬蟲-100練】第5練:爬蟲的翻頁操作+錯誤情況過濾

    【網(wǎng)絡(luò)安全帶你練爬蟲-100練】第5練:爬蟲的翻頁操作+錯誤情況過濾

    目錄 一、翻頁分析: 二、代碼邏輯 1、入口程序修改 2、page參數(shù)傳入 三、完整代碼 1、運行結(jié)果 2、錯誤分析: 3、缺陷代碼: 4、完善邏輯: 5、完善代碼: (說在前面,任何邏輯都有很多方法實現(xiàn),我們先從最笨的講起) (注:其中的cookie需要填自己的) 通過對比第一頁與

    2024年02月12日
    瀏覽(18)
  • 【網(wǎng)絡(luò)安全帶你練爬蟲-100練】第8練:json數(shù)據(jù)的最小項提取

    【網(wǎng)絡(luò)安全帶你練爬蟲-100練】第8練:json數(shù)據(jù)的最小項提取

    目錄 一、目標1:爬取指定json中數(shù)據(jù) 二、目標2:循環(huán)取json中數(shù)據(jù) 三、目標3:提取每個數(shù)據(jù)中的某一項 四、網(wǎng)絡(luò)安全小圈子 爬取data里數(shù)據(jù) ? 核心代碼: (1)json.loads()方法可用于解析有效的JSON字符串并將其轉(zhuǎn)換為Python字典 (2)dirt1[\\\'data\\\']是打印json中的data部分 運行結(jié)果:

    2024年02月13日
    瀏覽(18)
  • 【網(wǎng)絡(luò)安全帶你練爬蟲-100練】第19練:使用python打開exe文件

    【網(wǎng)絡(luò)安全帶你練爬蟲-100練】第19練:使用python打開exe文件

    目錄 一、目標1:調(diào)用exe文件 二、目標2:調(diào)用exe打開文件 1、subprocess?模塊允許在 Python 中啟動一個新的進程,并與其進行交互 2、subprocess.run()?函數(shù)來啟動exe文件 3、subprocess.run([\\\"文件路徑\\\"],check=True/) 4、check:如果程序返回一個非零的退出碼,subprocess.run()?函數(shù)就會拋出一個

    2024年02月11日
    瀏覽(17)
  • 【網(wǎng)絡(luò)安全帶你練爬蟲-100練】第22練:數(shù)據(jù)包中參數(shù)提取與處理

    目錄 一、目標1:GET數(shù)據(jù)包的處理 1、GET數(shù)據(jù)包中參數(shù)的提取 2、GET請求中 統(tǒng)計參數(shù)個數(shù) 二、目標2:POST數(shù)據(jù)包的處理 1、post中參數(shù)個數(shù)的提取 2、POST請求中 統(tǒng)計參數(shù)個數(shù) (與GET類似,就不再做敘述了)

    2024年02月10日
    瀏覽(22)
  • 【網(wǎng)絡(luò)安全帶你練爬蟲-100練】第21練:批量獲取文件夾中文件名

    目錄 一、目標1:使用python爬取指定文件夾中的文件名 二、目標2:在文件夾指定目錄打開命令行 方法一:使用 os 模塊 將 /path/to/folder 替換為實際的文件夾路徑。 os.listdir() 函數(shù)用于獲取指定文件夾中的文件名列表,然后可以遍歷列表并處理每個文件名 方法二:使用 glob 模塊

    2024年02月09日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包