python批量處理URL并提取內(nèi)容且按序保存到本地
這個是我在上網(wǎng)找資料的時候,發(fā)現(xiàn)下載資料PDF居然要付費,然后我查看網(wǎng)頁源代碼發(fā)現(xiàn)它網(wǎng)頁的資料都是PDF的png格式,每一個圖片都是寫在一個DIV標(biāo)簽里面的,手動操作肯定比較復(fù)雜,(說明,博主我是學(xué)C++的,對python不是很懂),我知道python肯定可以實現(xiàn)這事,于是馬上學(xué)習(xí)了一波。
一、需求分析
網(wǎng)頁的頁面源代碼如下圖所示,它的每一個<div>標(biāo)簽里面的img的URL就是資料的內(nèi)容,可以直接通過URL來打開資料圖片,然后“另存為”即可,但是手動操作太麻煩了(當(dāng)然有同學(xué)說直接用爬蟲,也可以哈,但是我沒用),要是能自動化批量給它一個全是URL的文本文件,讓python幫我逐一打開然后按照順序命好名稱逐一保存到本地文件就好了。
但是網(wǎng)頁源碼是HTML格式的,手動提取網(wǎng)頁源碼的URL也太慢了,所以我們還需要一個python函數(shù)來幫我們從給定的HTML的文本文件里面提取出URL按行保存到指定文本文件里。
二、從HTML中提取可用URL
1、先在項目目錄下新建一個文本文件命名為html.txt。
2、將網(wǎng)頁源碼中所需要的地方復(fù)制到html.txt中。如下圖所示
3、新建一個py文件,在里面寫具體實現(xiàn),通過觀察發(fā)現(xiàn)所有目標(biāo)URL均以png結(jié)尾,可以使用正則表達(dá)式匹配,取出目標(biāo)URL 。然后保存到指定的文本文件HTTP.txt中。代碼如下:
import re # 打開HTML文件 with open('html.txt', 'r') as file: html_content = file.read() # 使用正則表達(dá)式提取URL pattern = r'<img\s+data-src="([^"]+\.png)"' urls = re.findall(pattern, html_content) # 將URL保存到http.txt文件中 with open('HTTP.txt', 'w') as file: for url in urls: file.write(url + '\n')
4、執(zhí)行完成后我們就得到了全是目標(biāo)URL的一個文本文件了
三、批量執(zhí)行URL按序保存到本地
1、打開HTTP.txt文件,按行取出URL,打開URL判斷是否能正常打開,不需要執(zhí)行瀏覽器打開這一操作,只需要得到返回值即可。
2、需要URL的順序和保存的png一一對應(yīng),比如第一行URL對應(yīng)圖png1,所以考慮按序命名,設(shè)置計數(shù)器。根據(jù)計算器生成png文件的名稱。
3、保存到指定文件夾,且命名好。
import requests # 創(chuàng)建一個計數(shù)器 count = 1 # 打開網(wǎng)址文件 with open('HTTP.txt', 'r') as file: # 逐行讀取網(wǎng)址 for line in file: url = line.strip() # 去除行尾的換行符和空格 # 下載圖片并保存到本地 response = requests.get(url) if response.status_code == 200: # 生成圖片文件名 filename = f'{count}.jpg' # 保存到桌面文件夾 save_path = f'F:/桌面文件夾/tupian/{filename}' with open(save_path, 'wb') as image_file: image_file.write(response.content) print(f'Saved image: {save_path}') # 增加計數(shù)器 count += 1 else: print(f'Failed to download image from {url}')
4、運行代碼,查看結(jié)果。如圖
到此這篇關(guān)于python批量處理URL并提取內(nèi)容且按序保存到本地的文章就介紹到這了,更多相關(guān)python處理URL并提取內(nèi)容內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Pygame與OpenCV聯(lián)合播放視頻并保證音畫同步
Pygame的Movie模塊已經(jīng)廢棄多年,本文主要介紹了Pygame與OpenCV聯(lián)合播放視頻并保證音畫同步,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-12-12升級keras解決load_weights()中的未定義skip_mismatch關(guān)鍵字問題
這篇文章主要介紹了升級keras解決load_weights()中的未定義skip_mismatch關(guān)鍵字問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06跟老齊學(xué)Python之玩轉(zhuǎn)字符串(3)
字符串是一個很長的話題,縱然現(xiàn)在開始第三部分,但是也不能完全說盡。因為字符串是自然語言中最復(fù)雜的東西,也是承載功能最多的,計算機高級語言編程,要解決自然語言中的問題,讓自然語言中完成的事情在計算機上完成,所以,也不得不有更多的話題。2014-09-09python -m pip install 和 pip in
python -m pip install <package> 使用了 -m 參數(shù)來確保以 Python 模塊的形式運行 pip,適用于確保在不同的環(huán)境中正確使用 pip,這篇文章主要介紹了python -m pip install 和 pip install 的區(qū)別,需要的朋友可以參考下2023-07-07windows11環(huán)境安裝django項目GNU gettext工具的步驟
Django 框架具有很好的 I18N 和 L10N 的支持,其實現(xiàn)是基于 GNU 的 gettext,本文主要介紹了windows11環(huán)境安裝django項目GNU gettext工具的步驟,具有一定的參考價值,感興趣的可以了解一下2024-04-04pandas groupby分組對象的組內(nèi)排序解決方案
這篇文章主要介紹了pandas groupby分組對象的組內(nèi)排序解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03