不會哄女朋友?來,教你爬搞笑圖片
今日雞湯
美麗的藍圖落在懶漢手裡,也不過是一頁廢紙。
今天我們要爬取糗事百科中的圖片,網站
案例分析
我們做爬蟲首先需要找規律,在這其中最喜歡的就是分頁欄了。有分頁欄就代表當你按下一個頁碼的時候,HTML 頁面會發起請求。有請求就肯定有資料,有資料就一定能抓到。
好,接下來回歸正題~
我們開啟這個網站,快速的將滾動條拖動到最下面,看到了我們最喜歡的分頁欄
接下來我們開啟瀏覽器抓包工具,觀察瀏覽器位址列,分析是否為非同步請求。
簡簡單單同步請求,肯定用了 get 方法,既然為同步請求,我們就需要解析 HTML 頁面,獲取每個 img
標籤中的 src
屬性。
接下來繼續觀察瀏覽器位址列中的規律,當我們在第一頁的時候為
https://www.qiushibaike.com/imgrank/
這個地址。
我們切換至第二頁為 https://www.qiushibaike.com/imgrank/page/2/
這個地址。
這其中有些規律。那將最後的數字改為 3 訪問到的頁面就是第三頁。
好啦,html 跳轉的規律和 HTML 請求方式,我們都已經知曉。
接下來解析 HTML 頁面,在瀏覽器中右擊檢視桌面原始碼。
然後使用開發者工具中的元素定位,定位一張圖片。
上圖中紅框框出的部分為圖片的 url 地址,綠框中為圖片預覽。可以將 url 複製下來到頁面原始碼中分析。
在原始碼中的位置我們知道了,接下來只需要使用一種技術獲取到就可以啦。
可選的技術有:
- xpath
- bs4
- 正則
這裡我選擇正則,因為每個 img
標籤的相似度極高,可以批量使用。
如下圖所示:
圖中紅框的部分為相同部分,綠框部分為不同部分,橙底為背景的為我們要取出的部分。
這裡需要注意,獲取的 src
屬性需要新增 https:
字首。
好啦,分析完畢啦,接下來 Let’s Coding~
開碼
- 第一步:匯入所需模組
- 第二步:使用者輸入爬取第幾頁的內容,或者定義爬取多少圖片
- 第三步,設定
url
- 第四步:發請求
- 第五步:解析返回資料
- 第六步:儲存圖片
引入 requests
、re
、os
標題中的三個模組分別為:請求模組,正規表示式模組,系統模組
import requests, re, os
建立資料夾
# 判斷存圖片的資料夾是否存在
if not os.path.exists('./imgs'):
os.mkdir('./imgs')
使用者動態指定爬取圖片
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36 Edg/86.0.622.63'
}
url = 'https://www.qiushibaike.com/imgrank/'
# 由使用者控制爬取第幾頁的內容
url = url+'page/'+input('想爬取第幾頁?')
發請求並解析資料
respones = requests.get(url = url, headers= headers).text
# 正則規則,.*?為任意內容,(.*?) 為取出的內容,其中可以為任意內容
ex = '<div class="thumb">.*?<img src="(.*?)" alt="'
# 資料清洗,獲取圖片的地址,陣列形式
urls = re.findall(ex,respones,re.S)
為獲取的圖片連結發請求並儲存圖片
for i in range(0,len(urls)):
#為每個圖片新增https字首
urls[i] = 'https:'+urls[i]
#發請求
img = requests.get(url = urls[i],headers=headers).content
# 解析圖片名稱
img_name = str(urls[i]).split('/')[-1]
with open('./imgs/'+img_name,'wb') as fp:
fp.write(img)
print(img_name+'儲存成功!')
完整程式碼
import requests,re,os
#引入 os 模組方便資料夾操作
if __name__ == '__main__':
# 判斷存圖片的資料夾是否存在
if not os.path.exists('./imgs'):
os.mkdir('./imgs')
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36 Edg/86.0.622.63'
}
url = 'https://www.qiushibaike.com/imgrank/'
# 由使用者控制爬取第幾頁的內容
url = url+'page/'+input('想爬取第幾頁?')
# response中為網頁原始碼
respones = requests.get(url = url, headers= headers).text
# 正則規則
ex = '<div class="thumb">.*?<img src="(.*?)" alt="'
# 資料清洗,獲取圖片的地址
urls = re.findall(ex,respones,re.S)
for i in range(0,len(urls)):
#為每個圖片新增https字首
urls[i] = 'https:'+urls[i]
#發請求
img = requests.get(url = urls[i],headers=headers).content
# 解析圖片名稱
img_name = str(urls[i]).split('/')[-1]
with open('./imgs/'+img_name,'wb') as fp:
fp.write(img)
print(img_name+'儲存成功!')
相關文章
- 糗趣兔,搞笑網站,搞笑話圖片網站
- 不會Python爬蟲?教你一個通用爬蟲思路輕鬆爬取網頁資料Python爬蟲網頁
- ThinkPHP 3.13 搞笑圖站 搞笑死了PHP
- Java爬蟲批量爬取圖片Java爬蟲
- 爬蟲---xpath解析(爬取美女圖片)爬蟲
- node:爬蟲爬取網頁圖片爬蟲網頁
- AotucCrawler 快速爬取圖片
- Python爬蟲—爬取某網站圖片Python爬蟲網站
- 【python--爬蟲】千圖網高清背景圖片爬蟲Python爬蟲
- 爬蟲 Scrapy框架 爬取圖蟲圖片並下載爬蟲框架
- 淺談基於uinapp製作一個搞笑圖片生成器UIAPP
- 網路爬蟲---從千圖網爬取圖片到本地爬蟲
- Python爬蟲入門【5】:27270圖片爬取Python爬蟲
- 爬取愛套圖網上的圖片
- 爬取微博圖片資料存到Mysql中遇到的各種坑mysql儲存圖片爬取微博圖片MySql
- 教你用Python爬取圖蟲網Python
- 教你用Python爬取妹子圖APPPythonAPP
- thinkphp開發的搞笑圖片娛樂站免費開源下載PHP
- python 爬蟲之requests爬取頁面圖片的url,並將圖片下載到本地Python爬蟲
- Python爬蟲實戰詳解:爬取圖片之家Python爬蟲
- 圖片縮放(不裁剪,按原來比例計算寬高)
- iOS面試題-tableivew上面展示圖片的時候,在網路還未回來時,將cell滑走,那被划走的cell還會不會顯示圖片?iOS面試題
- 跟著教程做主圖,教你輕鬆去除圖片背景!
- Python爬蟲新手教程: 知乎文章圖片爬取器Python爬蟲
- Python爬蟲遞迴呼叫爬取動漫美女圖片Python爬蟲遞迴
- Python《必應bing桌面圖片爬取》Python
- 小程式之圖片懶載入[完美方案,你不來看看?]
- CSS 來佈局圖片CSS
- Python 爬蟲零基礎教程(1):爬單個圖片Python爬蟲
- 新手爬蟲教程:Python爬取知乎文章中的圖片爬蟲Python
- Python爬取鬥圖啦,媽媽再也不會擔心我無圖可刷了Python
- python 裁剪圖片;位深度不變Python
- Python爬蟲,網上的圖片素材通通免費哦,你學會了嗎?Python爬蟲
- 青花瓷圖片的爬取和resize
- Python爬蟲入門【7】: 蜂鳥網圖片爬取之二Python爬蟲
- Python爬蟲入門【8】: 蜂鳥網圖片爬取之三Python爬蟲
- Python爬蟲入門【6】:蜂鳥網圖片爬取之一Python爬蟲
- 簡單的爬蟲:爬取網站內容正文與圖片爬蟲網站