明天就是1024了,Python前來報到!爬取全網M子圖片!


今天是1024程序員節,不得整點活~
雖然不太好教爬1024,但是可以爬點其它的!
比如妹子圖,這不都是各位喜歡的~
在這里插入圖片描述
代碼流程
模擬瀏覽器向服務器發送一個http請求,網站接收到請求后返回數據。
在寫爬蟲代碼的時候一定先要去模擬瀏覽器訪問,因為現在的網站當接收到http請求后會校驗當前請求是否是一個瀏覽器,如果是,允許訪問,如果不是,禁止訪問!
在這里插入圖片描述
環境啥的我就不說了,還是老樣子~

首先把我們要用的包導進去

import os
# 自動創建文件夾
import requests
# requests 爬蟲包 需要下載 pip install requests
from bs4 import BeautifulSoup
# 網頁選擇器 pip install bs4

 

然后我們就要開始模擬瀏覽器

headers = {
    'user-agent':
        'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36',

    # 反盜鏈
    'referer': 'https://www.mzitu.com/'
}

 

既然我們要下載,當然要有文件夾去保存對吧,這里就實現自動創建文件夾,不用我們去額外創建。

def get_girls(url):
    # 自動創建文件夾
    if not os.path.exists('./學習資料/'):
        os.mkdir('./學習資料/')

 

當然,為了不讓你的小秘密被別人看到,咱們這里就把它命名為學習資料吧~
在這里插入圖片描述
我們現在來發送請求,http協議中 有幾種請求方法:

  • get 獲取數據
  • post 數據提交 [賬號密碼提交]
    html = requests.get(url, headers=headers).text

print(html)

對剛剛抓取到的數據進行二次篩選

需要兩個參數,想要二次提取的網頁 html變量臨時保存了。
html解析庫 lxml pip install lxml
html解析庫可以將html代碼轉成我們的python對象

 soup = BeautifulSoup(html, 'lxml')

 

通過剛剛分析得出一個結論,一張圖片是由img標簽保存的,li標簽包含一個img標簽。如果我們獲取了所有的li標簽,相當於獲取到了所有的img標簽,因為一個ul標簽包含了所有的li標簽,所以獲取一個ul就相當於獲取到了所有的li標簽。

遍歷所有的li標簽

all_list = soup.find('ul', id='pins').find_all_next('li')

for _ in all_list:
   girl_title = _.get_text()
   girl_url = _.find('img')['data-original']
   print(girl_title, girl_url)

 

這個時候就可以開始下載了

response = requests.get(girl_url, headers=headers)
fileName = girl_title + '.jpg'
print('正在保存圖片:', girl_title)
with open('./學習資料/' + fileName, 'wb') as f:
f.write(response.content)

 

當然,只下載一頁的話當然不過癮,咱們這里就來實現翻頁下載,當然,別爬多了,克制一下自己。
代碼雖好,但還是要克制一下自己喲~

for page in range(1, 256):
    url = 'https://www.mzitu.com/page/%s' % page
    get_girls(url)

 

你要下載多少頁,直接改成多少頁就好了。

兄弟們學習python,有時候不知道怎么學,從哪里開始學。掌握了基本的一些語法或者做了兩個案例后,不知道下一步怎么走,不知道如何去學習更加高深的知識。
那么對於這些大兄弟們,我准備了大量的免費視頻教程,PDF電子書籍,以及視頻源的源代碼!
還會有大佬解答!
包括本文源代碼、對應視頻都在這里了 點擊藍色字體即可獲取這些福利
歡迎加入,一起討論 一起學習!

我們看看結果
在這里插入圖片描述在這里插入圖片描述

只能打碼了,委婉一點。
文件夾我也不打開了,大家等下自己去試試,然后再慢慢打開把哈哈~
在這里插入圖片描述
兄弟們,如果看完了感覺還過的去的話,記得來個三連,你的三連就是我最大的動力!
有啥問題和建議都可以在評論區一起交流~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM