ython作為一門高級編程語言,它的定位是優雅、明確和簡單。我學用python差不多一年時間了,用得最多的還是各類爬蟲腳本:寫過抓代理本機驗證的腳本,寫過論壇中自動登錄自動發貼的腳本,寫過自動收郵件的腳本,寫過簡單的驗證碼識別的腳本。
這些腳本有一個共性,都是和web相關的,總要用到獲取鏈接的一些方法,故累積了不少爬蟲抓站的經驗,在此總結一下,那么以后做東西也就不用重復勞動了。
下面分享一個小案例,實現爬取網站里面的圖片,包括源碼及實現思路。
一、還原手工操作
所謂爬取頁面圖片,正常人手動操作可以分為兩步:
1.打開頁面
2.選中圖片下載到指定文件夾
用代碼實現的話可以節省掉每次下載圖片的操作,運行代碼實現批量下載。
二、設計代碼實現
步驟一:導入相關庫操作
import urllib #導入urllib包
import urllib.request#導入urllib包里的request方法
import re #導入re正則庫
步驟二:定義解析頁面 load_page()
這個函數實現打開傳入的路徑并將頁面數據讀取出來,實現代碼,包括發送請求,打開頁面,獲取數據。
代碼實現:
def load_page(url):
request=urllib.request.Request(url)#發送url請求
response=urllib.request.urlopen(request)#打開url網址
data=response.read()#讀取頁面數據
return data#返回頁面數據
步驟三:定義get_image()函數
首先利用正則表達式匹配圖片路徑并存到數組中。
其次遍歷數組實現圖片下載操作。
代碼實現:
def get_image(html):
regx=r'http://[\S]*jpg' #定義正則匹配公式
pattern=re.compile(regx)#構造匹配模式,速度更快
get_image=re.findall(pattern,repr(html))#repr()將內容轉化為字符串形式,findall列表形式展示正則表達式匹配的結果
num=1 #定義變量控制循環
for img in get_image: #定義變量遍歷數組
image=load_page(img)#將圖片路徑傳入加載函數
with open('F:\photo\%s.jpg'%num,'wb') as fb: #以只讀方式打開圖片并命名
fb.write(image) #寫入內容
print('正在下載第%s張圖片'%num)
num=num+1 #變量遞增
print("下載完成")
步驟四:函數調用
#調用函數
url='http://p.weather.com.cn/2019/10/3248439.shtml' #傳入url路徑
html=load_page(url)#加載頁面
get_image(html)#圖片下載
關鍵單詞釋義
如果第一次接觸爬蟲代碼,相信有幾個單詞大家很陌生,為了方便記憶我把他們歸類到一起加深印象,你也可以拿出一張白紙試著努力回憶著。
1.爬蟲協議庫ulrlib、urllib.request
2.正則匹配庫rb
3.發送請求方法request()
4.打開頁面方法urlopen()
5.讀取數據方法read()
6.正則表達式-所有圖片【\S】*.jpg
7.匹配模式定義compile()
8.查找匹配findall()
9.循環遍歷語句 for a in b
10.打開文件 并命名 with open()... as fb
11.寫到... write*()
12.輸出語句 print()
到現在為止可以把我上面的代碼在pycharm中打開嘗試著運行起來吧!
最后,有2個報錯信息匯總供參考:
1. module 'urllib' has no attribute 'requset'
定位到當行語句,發現request 單詞拼寫錯誤。
2. 沒有報錯,但是圖片沒有下載成功
重新檢查代碼,發現正則表達式寫的有錯誤,記住是大寫的S修改完之后看效果。
我是一名從事了多年軟件測試的老測試員,今年年初我花了一個月整理了一份最適合2020年學習的軟件測試學習干貨,可以送給每一位對軟件測試感興趣的小伙伴,想要獲取的可以關注我的頭條號+私信:【測試】,即可免費獲取。
內容首發于工粽號:程序員大澈,每日分享一段優質代碼片段,歡迎關注和投稿!
大家好,我是大澈!
本文約 700+ 字,整篇閱讀約需 1 分鐘。
今天分享一段優質 HTML 代碼片段,只需一行代碼即可實現圖片懶加載的處理。
老規矩,先閱讀代碼片段并思考,再看代碼解析再思考,最后評論區留下你的見解!
<img src="example.jpg" alt="示例圖片" loading="lazy">
分享原因
這段代碼使用 HTML5 提供的一個非常簡單的方法:為圖片元素添加 loading="lazy" 屬性,實現了圖片的懶加載。
通過這種方式,我們可以讓瀏覽器自動處理圖片懶加載,無需額外的 js 腳本支持。
這對于不需要考慮兼容性的項目來說,實現圖片的懶加載非常高效!
代碼解析
1. src="example.jpg"
src屬性指定了要顯示的圖片的文件路徑,這里是example.jpg。
2. alt="示例圖片"
alt屬性提供了圖片的替代文本描述。
當圖片由于某種原因無法加載時,這個文本會顯示出來,同時也有助于屏幕閱讀器為視障用戶描述圖片內容。
3. loading="lazy"
loading屬性設置為lazy表示延遲加載圖片。
當設置了 loading="lazy" 時,瀏覽器會延遲加載圖片,直到圖片即將進入視口(用戶即將看到的屏幕區域)。這意味著在頁面加載的初始階段,瀏覽器不會立即請求和加載這些圖片,而是優先加載頁面的關鍵內容,如文本和主要布局。
當用戶滾動頁面使得圖片即將可見時,瀏覽器才會開始加載圖片資源,從而減少了初始頁面加載時的網絡請求數量和數據量,加快了頁面的呈現速度。
大多數現代瀏覽器都支持 loading="lazy" 屬性,但在一些較舊的瀏覽器中可能不被支持。
對于不支持的瀏覽器,可以使用 JavaScript 庫(如 lazysizes)來實現類似的懶加載效果。
網頁設計中,添加圖片并為其添加超鏈接是常見的需求。通過使用HTML,我們可以輕松實現這些功能。下面將詳細介紹如何實用地添加圖片,并為圖片添加超鏈接。
html代碼
首先,我們需要了解HTML中如何添加圖片。在HTML中,我們使用`<img>`標簽來插入圖片。`<img>`標簽有幾個重要的屬性,包括`src`、`alt`和`width`、`height`等。`src`屬性用于指定圖片的URL地址,`alt`屬性用于提供圖片無法加載時的替代文本,而`width`和`height`屬性則用于設置圖片的寬度和高度。
下面是一個簡單的示例,展示如何在HTML中添加圖片:
<img src="這里寫圖片地址,要帶http協議,比如:https://www.chaojilu.com" alt="看不到圖片,就顯示這個文字" width="500" height="300">
在這個示例中,我們使用了`<img>`標簽,并通過`src`屬性指定了圖片的URL地址。同時,我們還設置了`alt`屬性以提供替代文本,并通過`width`和`height`屬性設置了圖片的尺寸。
接下來,我們來看如何為圖片添加超鏈接。在HTML中,我們使用`<a>`標簽來創建超鏈接。`<a>`標簽的`href`屬性用于指定鏈接的目標地址。為了將圖片包含在超鏈接中,我們可以將`<img>`標簽放置在`<a>`標簽內部。
下面是一個示例,展示如何為圖片添加超鏈接:
<a href="https://www.chaojilu.com">
<img src="image.jpg" alt="看不到圖片,就顯示這個文字"width="這里寫寬度" height="高度">>
</a>
在這個示例中,我們將`<img>`標簽放置在`<a>`標簽內部,并通過`href`屬性指定了鏈接的目標地址。當用戶點擊圖片時,將會跳轉到指定的網址。同時,我們還通過`alt`屬性為圖片提供了替代文本,以便在圖片無法加載時為用戶提供提示。
除了基本的添加圖片和超鏈接功能外,我們還可以通過一些技巧來優化圖片的顯示和加載效果。例如,我們可以使用CSS樣式來設置圖片的邊框、圓角等外觀屬性,提升頁面的美觀度。同時,我們還可以通過壓縮圖片文件大小、使用懶加載等技術來優化圖片的加載速度,提高用戶體驗。
需要注意的是,在添加圖片和超鏈接時,我們需要確保所使用的圖片資源是合法且可訪問的。避免使用未經授權或侵權的圖片資源,以免引發法律問題。同時,我們還應該關注圖片的版權和使用協議,確保在使用圖片時遵守相關規定。
總之,通過使用HTML的`<img>`和`<a>`標簽,我們可以輕松地在網頁中添加圖片并為圖片添加超鏈接。通過合理設置屬性和優化技巧,我們可以提升圖片的顯示效果和加載速度,為用戶提供更好的瀏覽體驗。
各位鹿友有什么不懂可以在評論區留言,咱們一起探討學習。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。