Python爬蟲 爬取圖片

在我們日常上網瀏覽網頁的時候,經常會看到一些好看的圖片,我們就希望把這些圖片保存下載,或者用戶用來做桌面壁紙,或者用來做設計的素材。

  我們最常規的做法就是通過鼠標右鍵,選擇另存為。但有些圖片鼠標右鍵的時候并沒有另存為選項,還有辦法就通過就是通過截圖工具截取下來,但這樣就降低圖片的清晰度。好吧~!其實你很厲害的,右鍵查看頁面源代碼。

  我們可以通過python?來實現這樣一個簡單的爬蟲功能,把我們想要的代碼爬取到本地。下面就看看如何使用python來實現這樣一個功能。

一,獲取整個頁面數據

首先我們可以先獲取要下載圖片的整個頁面信息。

getjpg.py

#coding=utf-8
import urllibdef getHtml(url):page = urllib.urlopen(url)html = page.read()return htmlhtml = getHtml("http://tieba.baidu.com/p/2738151262")print html

  Urllib?模塊提供了讀取web頁面數據的接口,我們可以像讀取本地文件一樣讀取www和ftp上的數據。首先,我們定義了一個getHtml()函數:

  urllib.urlopen()方法用于打開一個URL地址。

  read()方法用于讀取URL上的數據,向getHtml()函數傳遞一個網址,并把整個頁面下載下來。執行程序就會把整個網頁打印輸出。

二,篩選頁面中想要的數據

  Python?提供了非常強大的正則表達式,我們需要先要了解一點python?正則表達式的知識才行。

Python正則

假如我們百度貼吧找到了幾張漂亮的壁紙,通過到前段查看工具。找到了圖片的地址,如:src=”http://imgsrc.baidu.com/forum......jpg”pic_ext=”jpeg”

修改代碼如下:

import re
import urllibdef getHtml(url):page = urllib.urlopen(url)html = page.read()return htmldef getImg(html):reg = r'src="(.+?\.jpg)" pic_ext'imgre = re.compile(reg)imglist = re.findall(imgre,html)return imglist      html = getHtml("http://tieba.baidu.com/p/2460150866")
print getImg(html)

  我們又創建了getImg()函數,用于在獲取的整個頁面中篩選需要的圖片連接。re模塊主要包含了正則表達式:

  re.compile()?可以把正則表達式編譯成一個正則表達式對象.

  re.findall()?方法讀取html?中包含?imgre(正則表達式)的數據。

?  ?運行腳本將得到整個頁面中包含圖片的URL地址。

三,將頁面篩選的數據保存到本地

把篩選的圖片地址通過for循環遍歷并保存到本地,代碼如下:

#coding=utf-8
import urllib
import redef getHtml(url):page = urllib.urlopen(url)html = page.read()return htmldef getImg(html):reg = r'src="(.+?\.jpg)" pic_ext'imgre = re.compile(reg)imglist = re.findall(imgre,html)x = 0for imgurl in imglist:urllib.urlretrieve(imgurl,'%s.jpg' % x)x+=1html = getHtml("http://tieba.baidu.com/p/2460150866")print getImg(html)

  這里的核心是用到了urllib.urlretrieve()方法,直接將遠程數據下載到本地。

  通過一個for循環對獲取的圖片連接進行遍歷,為了使圖片的文件名看上去更規范,對其進行重命名,命名規則通過x變量加1。保存的位置默認為程序的存放目錄。

程序運行完成,將在目錄下看到下載到本地的文件。

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/35859.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/35859.shtml
英文地址,請注明出處:http://en.pswp.cn/news/35859.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CVPR 2023 | 用戶可控的條件圖像到視頻生成方法(基于Diffusion)

注1:本文系“計算機視覺/三維重建論文速遞”系列之一,致力于簡潔清晰完整地介紹、解讀計算機視覺,特別是三維重建領域最新的頂會/頂刊論文(包括但不限于 Nature/Science及其子刊; CVPR, ICCV, ECCV, NeurIPS, ICLR, ICML, TPAMI, IJCV 等)。 本次介紹的論…

使用chatGPT-4 暢聊量子物理學(二)

Omer 量子力學的主導哲學或模型或解釋是什么? ChatGPT 量子力學是一門描述微觀世界中粒子行為的物理學理論,但它的解釋和哲學觀點在學術界存在多種不同的觀點和爭議。以下是幾種主要的哲學觀點或解釋: 哥本哈根解釋:這是最為廣泛…

Windows 11清除無效、回收站、過期、緩存、補丁更新文件

Windows 11與之前的Windows版本類似,也需要定期清理無效、垃圾、過期、緩存文件來保持系統性能和存儲空間的優化。以下是在Windows 11中進行這些清理操作的一些建議方法: 磁盤清理工具 Windows 11內置了磁盤清理工具,可以幫助你刪除臨時文件…

Node.js學習筆記-03

七、網絡編程 1. 構建 TCP 服務 TCP 是面向連接的協議,顯著特征 在傳輸之前需要3次握手形成會話。 客戶端 ——請求連接——> 服務器端 ——響應——> 客戶端 ——開始傳輸——> 服務器端。 2. 構建 UDP 服務 3. 構建 HTTP 服務 http模塊 在node中HTT…

《Java面向對象程序設計》學習筆記——第 7 章 面向對象設計的基本原則

?專欄:《Java面向對象程序設計》學習筆記 ?# 第 7 章 面向對象設計的基本原則 7.1 UML 類圖簡介 類的 UML 圖 長方形垂直地分為三層。 第 1 層是名字層。 名字是常規字形,表明該類是具體類,如果類的名字是斜體字形,表明該類…

C語言可變數組 嵌套的可變數組,翻過了山跨過了河 又掉進了坑

可變數組 ?專欄內容: postgresql內核源碼分析 手寫數據庫toadb 并發編程 個人主頁:我的主頁 座右銘:天行健,君子以自強不息;地勢坤,君子以厚德載物. 概述 數組中元素是順序存放,這一特性讓我們…

【IC萌新虛擬項目】spt_core模塊基于dc的綜合環境搭建與面積時序優化

關于整個虛擬項目,請參考: 【IC萌新虛擬項目】Package Process Unit項目全流程目錄_尼德蘭的喵的博客-CSDN博客 前言 當驗證的同學正在瘋狂寫測試點,補充測試用例各種找茬找bug時候,設計的同學也要進入到跑綜合修時序優化面積的階段了。 還是老樣子,關于芯片綜合的知識就…

Redis_緩存3_緩存異常(數據不一致、雪崩、擊穿、穿透)

14.6緩存異常 四個方面 緩存中數據和數據庫不一致緩存雪崩緩存擊穿緩存穿透 14.6.1數據不一致: 一致性包括兩種情況 緩存中有數據,需要和數據庫值相同緩存中沒有數據,數據庫中的數據是最新值 如果不符合以上兩種情況,則出現…

Linux tee

tee 是一個命令行工具,它可以從標準輸入讀取數據,并將其同時輸出到標準輸出和指定的文件中。tee 命令非常實用,特別是在需要同時查看輸出內容和將其保存到文件中的情況下。 tee 命令的基本語法如下: command | tee [options] [f…

Mysql 搭建MHA高可用架構,實現自動failover,完成主從切換

目錄 自動failover MHA: MHA 服務 項目:搭建Mysql主從復制、MHA高可用架構 實驗項目IP地址配置: MHA下載地址 項目步驟: 一、修改主機名 二、編寫一鍵安裝mha node腳本和一鍵安裝mha mangaer腳本,并執行安裝 …

docker容器限定ip訪問

docker容器限定ip訪問 一、測試所需環境:二、使用docker的 iptables 策略三、Docker使用iptables 與系統Firewalld之間的關系四、沖突解決方案 一、測試所需環境: 主機1: ip:192.168.3.117 環境配置:docker、httpd(do…

你真的了解ORM嗎?通過一個簡單的例子來學習ORM

什么是ORM ORM(Object-Relational Mapping)是一種將面向對象程序數據模型與關系數據庫之間進行映射的技術。 比如數據庫表user,它有id、name、age字段映射到Java實體類就是User類,有id、name、age屬性。 CREATE TABLE user (id…

2023國賽 高教社杯數學建模ABCDE題思路匯總分析

文章目錄 0 賽題思路1 競賽信息2 競賽時間3 建模常見問題類型3.1 分類問題3.2 優化問題3.3 預測問題3.4 評價問題 4 建模資料 0 賽題思路 (賽題出來以后第一時間在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 競賽信息 全國大學生數學建模…

echarts加釣魚島赤尾嶼(vue)(親測有效)

1.首先引入json文件,node_modules/echarts中就有 import chinaData from "../../node_modules/echarts/map/json/china.json" 2.初始化地圖,在初始化地圖的時候加入釣魚島和赤尾嶼的數據,在chinaData下的features中加入即可&#x…

Design-Pattern設計模式

Design-Pattern設計模式 圖說設計模式 圖說設計模式 在線書籍 軟件模式是將模式的一般概念應用于軟件開發領域,即軟件開發的 總體指導思路或參照樣板。軟件模式并非僅限于設計模式,還包括 架構模式、分析模式和過程模式等,實際上&#xff…

FFmpeg常見命令行(四):FFmpeg流媒體

前言 在Android音視頻開發中,網上知識點過于零碎,自學起來難度非常大,不過音視頻大牛Jhuster提出了《Android 音視頻從入門到提高 - 任務列表》,結合我自己的工作學習經歷,我準備寫一個音視頻系列blog。本文是音視頻系…

leetcode做題筆記77組合

給定兩個整數 n 和 k,返回范圍 [1, n] 中所有可能的 k 個數的組合。 你可以按 任何順序 返回答案。 思路一:直接求出組合數將每個組合放進數組中 int** combine(int n, int k, int* returnSize, int** returnColumnSizes) {int size 0, num 1, i;in…

Rust中的智能指針:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak<T>

Rust中的智能指針是什么 智能指針(smart pointers)是一類數據結構,是擁有數據所有權和額外功能的指針。是指針的進一步發展 指針(pointer)是一個包含內存地址的變量的通用概念。這個地址引用,或 ” 指向”…

UML 類圖的畫法

1.類圖的畫法 類 整體是個矩形,第一層類名,第二層屬性,第三層方法。 :public- : private# : protected空格: 默認的default 對應的類寫法。 public class Student {public String name;public Integer age;protected I…

2023杭電第七場補題報告1002 1004 1011 1013

2023杭電第七場補題報告1002 1004 1011 1013 1002 B. Random Nim Game (hdu.edu.cn) 思路 手推一下就可以發現其實除了一次必定結束的其他情況概論都是 1 2 \frac{1}{2} 21? 代碼 #include <bits/stdc.h> using namespace std; #define int long long void solve()…